mysql主从复制 replication
复制原理:
1.master做更改数据操作(insert、update、delete)时,操作记录在binlog日志中。
2.slave读取master的binlog日志文件,分析并生成relaylog并将操作复制到salve。
实现步骤:
1.master服务器配置binlog
2.slave服务器配置relaylog
3.master授权slave账号,用来读取binlog权限
4.slave服务器用账号连接master服务器
实现:
1.编辑master服务器my.cnf文件 //同常在/etc/下
设置如下值:
# 服务器ID
server-id=101
# 声明2进制日志binlog的文件名 如下设置,生成后为mysql-bin.xxxx
bin-log=mysql-bin
# 二进制格式: mixd/row/statement
#
# row: 2进制记录磁盘变化
# statement: 2进制录制执行语句,如update...
# mixd: 以上两种混合
#
# 语句复杂而磁盘变化少,合适用row
# 语句简单而影响数据多(上万行),合适用statement
# 如没办法明确以上两种哪种更佳合适,用mix。 又系统根据语句来自动决定
binlog-format=mixd
查看日志文件:
show master status
# 记录下当前binlog文件名与指针位置,稍后设置slave服务器起始binlog文件时有用到
2.编辑slave服务器my.cnf文件 //同常在/etc/下
# slave服务器的二进制文件也建议打开,可以在特殊情况下回复数据用,也可以给slave的从服务器读取用。
设置如下值:
# 服务器ID
server-id=201
# 声明2进制relaylog日志的文件名 如下设置,生成后为relay-bin.xxxx
relay-log=mysql-relay
# 声明2进制binlog日志的文件名 如下设置,生成后为relay-bin.xxxx
log-bin=mysql-bin
binlog-format=mixd
3.master服务器授权用户用来给slave读取binlog日志
grant replication client,replication slave on *.* to binlog@192.168.1.% identified by 'binlog';
flush privileges;
4.slave服务器设置读取master服务器的用户
change master to
master_host='192.168.1.101'
master_user='binlog'
master_password='binlog'
master_log_file='mysql-bin.000001' // 当前binlog文件名
master_log_pos=348; // 当前binlog指针位置
5.重启master与slave服务器的mysql服务
service mysqld restart
6.查看slave服务器与master服务器连接状态是否正常
master服务器mysql终端执行
show slave status
# 如没有连接成功,请检查iptable
# 设置iptable后,先 rstop slave 关闭slave服务,之后再 start slave 启动slave服务
复制原理:
1.master做更改数据操作(insert、update、delete)时,操作记录在binlog日志中。
2.slave读取master的binlog日志文件,分析并生成relaylog并将操作复制到salve。
实现步骤:
1.master服务器配置binlog
2.slave服务器配置relaylog
3.master授权slave账号,用来读取binlog权限
4.slave服务器用账号连接master服务器
实现:
1.编辑master服务器my.cnf文件 //同常在/etc/下
设置如下值:
# 服务器ID
server-id=101
# 声明2进制日志binlog的文件名 如下设置,生成后为mysql-bin.xxxx
bin-log=mysql-bin
# 二进制格式: mixd/row/statement
#
# row: 2进制记录磁盘变化
# statement: 2进制录制执行语句,如update...
# mixd: 以上两种混合
#
# 语句复杂而磁盘变化少,合适用row
# 语句简单而影响数据多(上万行),合适用statement
# 如没办法明确以上两种哪种更佳合适,用mix。 又系统根据语句来自动决定
binlog-format=mixd
查看日志文件:
show master status
# 记录下当前binlog文件名与指针位置,稍后设置slave服务器起始binlog文件时有用到
2.编辑slave服务器my.cnf文件 //同常在/etc/下
# slave服务器的二进制文件也建议打开,可以在特殊情况下回复数据用,也可以给slave的从服务器读取用。
设置如下值:
# 服务器ID
server-id=201
# 声明2进制relaylog日志的文件名 如下设置,生成后为relay-bin.xxxx
relay-log=mysql-relay
# 声明2进制binlog日志的文件名 如下设置,生成后为relay-bin.xxxx
log-bin=mysql-bin
binlog-format=mixd
3.master服务器授权用户用来给slave读取binlog日志
grant replication client,replication slave on *.* to binlog@192.168.1.% identified by 'binlog';
flush privileges;
4.slave服务器设置读取master服务器的用户
change master to
master_host='192.168.1.101'
master_user='binlog'
master_password='binlog'
master_log_file='mysql-bin.000001' // 当前binlog文件名
master_log_pos=348; // 当前binlog指针位置
5.重启master与slave服务器的mysql服务
service mysqld restart
6.查看slave服务器与master服务器连接状态是否正常
master服务器mysql终端执行
show slave status
# 如没有连接成功,请检查iptable
# 设置iptable后,先 rstop slave 关闭slave服务,之后再 start slave 启动slave服务