主从复制

mysql主服务器配置文件开启binlog,每个mysql服务器配置server-id参数,不能冲突。

server-id=xxx
log-bin=mysql-bin

–以上设置为mysql主服务器必须参数–

可以增加额外参数设置,设置log文件定期删除和不需要复制的数据库。

binlog-ignore-db=mysql,information_schema
#设置自动清理日志时间,防止占满
expire_logs_days = 15
#主主复制时,一般设置自增长步长为2
auto-increment-increment = 2
#设置自增长初始值,第一台为1,第二台为2。
auto-increment-offset = 1
#级联复制时设置:
log_slave_updates

 

从服务器为了防止被异常写入数据,建议设置read-only选项。直接在mysql配置文件添加即可。

确认server-id和日志开启是否正常。

mysql>show variables like ‘server_id’;
mysql>show variables like ‘log_bin’;

QQ截图20180611133901.png

开启日志后,在主库上建立复制用户,并设置防火墙向从服务器开放3306端口。

mysql> grant replication slave on *.* to ‘rep’@’10.10.1.%’ identified by ‘landuipeixun’;

mysql> flush privileges;

 

验证用户是否正常添加:mysql> select host,user from mysql.user;

2.png

mysql> flush table with read lock;

新开一个窗口使用mysqldump执行导出

查看主节点状态,记录下日志文件(File)和Position

mysql> show master status;

解锁主库

mysql> unlock tables;

在从库上导入数据库文件,并设置CHANGE MASTER 命令。

导入数据库后执行CHANGE MASTER

mysql> CHANGE MASTER TO
MASTER_HOST=’10.10.1.100′,
MASTER_PORT=3306,
MASTER_USER=’rep’,
MASTER_PASSWORD=’landuipeixun’,
MASTER_LOG_FILE=’mysql-bin.000003′,
MASTER_LOG_POS=120;

启动同步开关

mysql> start slave;

查看同步状态

mysql> show slave status\G

3.png

4.png

如果有错误,会在show slave status\G输出中显示,根据错误信息解决即可。

主-主复制

主-主复制和主从复制类似。

两个主服务器互为主从关系,相互备份。

参考主从复制的设置,相互导入对方的文件,并根据show master status输出信息设置CHANGE MASTER参数即可。

主主复制需要留意的内容:

#主主复制时,一般设置自增长步长为2

auto-increment-increment = 2

#设置自增长初始值,第一台为1,第二台为2。

auto-increment-offset = 1

#级联复制时设置:

log_slave_updates

主主复制时,log_slave_updates必须启用,以便从服务器连接到主服务器A时候能同步到另外一台主服务B的操作记录。

验证测试

在主库上新增库/表

查看从库是否正常同步变更。