要实现MySQL的主从复制,首先必须打开Master端的binlog记录功能,不然就没法实现。由于整个复制过程实际上就是Slave从aster端获取binlog日志,而后再在Slave上以相同顺序执行获取的binlog日志中的记录的各类SQL操做
.清除mysqlbinglog
#mysql -udbaroot -pdbaroot20070508 -h127.0.0.1 -e "purge binary logs to 'mysql-bin.000639';"
修改binlog过时自动清理(设为10天自动清理)
把binlog的过时时间设置为10天;
mysql -udbaroot -pdbaroot20070508 -h127.0.0.1 -e "set global expire_logs_days = 10;"
刷一下log使上面的设置生效,不然不生效。
mysql -udbaroot -pdbaroot20070508 -h127.0.0.1 -e "flush logs;"
为保证在MYSQL重启后仍然有效,在my.cnf中也加入此参数设置
expire_logs_days = 10
经过show global variables like '%expire_logs_days%';能够查看设置是否成功
mysql -udbaroot -pdbaroot20070508 -h127.0.0.1 -e "show global variables like '%expire_logs_days%';" mysql
对于数据量不大的mysql来讲,若是主从不一样步延迟太大了,可使用下面命令实如今线主从同步sql
首先要给slave一个受权帐号。而且双方3306端口要能telnet通。docker
mysqldump -hMDBD的ip -uMDB用于导库的mysql帐号 -p密码 -R --triggers --single-transaction --flush-logs --master-data --database 数据库 > 名字.sql数据库
而后再导入到slave上。服务器
mysql -uroot -ppwd -h127.0.0.1 -e 'slave stop;'
mysql -uroot -ppwd -h127.0.0.1 < 名字.sql
mysql -uroot -ppwd -h127.0.0.1 -e 'slave start;'函数
mysql -uroot -ppwd -h127.0.0.1 -e 'show slave status\G'spa
便可修复主从同步。线程
-R : 导出数据库的存储过程和函数日志
--triggers :为每一个转储的表转储触发器。该选项默认启用;用--skip-triggers禁用它。code
--single-transaction:从服务器转储数据以前发出一个BEGIN SQL语句。适用于事务表,例如InnoDB和BDB,由于而后它将在发出BEGIN而没有阻塞任何应用程序时转储一致的数据库状态。
--flush-logs --master-data :开始转储前刷新MySQL服务器日志文件,若是你想要同时转储和刷新日志,应使用--flush-logs连同--master-data。