mysql主从复制
Posted stono
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql主从复制相关的知识,希望对你有一定的参考价值。
mysql主从复制
https://www.cnblogs.com/superfat/p/5267449.html
https://www.cnblogs.com/phpstudy2015-6/p/6485819.html
https://blog.csdn.net/deeplearnings/article/details/78398526
# 在服务器的master/slave端进行my.cnf修改 vi /etc/my.cnf log-bin=mysql-bin binlog_format=mixed server-id=101 # 设置为IP地址最后一位 # 保存之后,重启mysql mysqladmin -uroot -proot shutdown mysqld_safe --user=mysql & # 主服务器修改 mysql -uroot -proot >grant replication slave on *.* to \'slave\'@\'%\' identified by \'slave\';
# 这样写貌似有问题哦,从服务器连的时候出现Slave_IO_Running: No >grant all privileges on *.* to \'slave\'@\'%\' identified by \'slave\';
>flush privileges;
# 如果主库有业务操作,先用读锁 锁定一下,获取一个一致性快照
>flush tables with read lock;
>show mater status; # 记录File\\Position结果;每次操作都会有变化; File | Position mysql-bin.000002 | 123
> unlock tables; # 解除读锁 # 从服务器修改 mysql -uroot -proot >stop slave; >change master to ->master_host="192.168.0.111", ->master_user="slave", ->master_password="slave", ->master_log_file="mysql-bin.000002", ->master_log_pos=123; >start slave; >show slave status \\G
测试:
1,主库 建库建表插入数据;从库都有; 2,从库 stop slave; 主库 插入数据,从库没有数据; 3,从库start slave; 主库插入数据,从库 全部同步过来; 4,从库stop slave; 主库插入数据,从库没有数据;从库start slave,数据就过来了;
数据量太大,处理方式:https://blog.csdn.net/andyzhaojianhui/article/details/60133872
1, 在/etc/my.cnf中[mysqld]部分写上expire_logs_days=1 2, 在主库中 mysql>purge master logs to \'mysql-bin.000888\'; 888日志不会删 3, 慎用主库 mysql>reset master; 可能会导致从库复制失效; 4, 从库失效处理:flush tables with read lock;
unlock tables;
或者使用脚本自动删除
for name in `ls /data/mysql|grep mysql.bin|grep -v index` do echo purge master logs to \\\'${name}\\\' > /data/mysql/purgesql mysql -uroot -proot </data/mysql/purgesql done
使用 mysql -uroot -proot -e "show databases" 可以执行sql语句
密码中如果有特殊字符,使用单引号把密码包含起来,或者使用\\进行转义;例如:-p\'$oot\' -p\\$oot
如果发现slave库中存在 server-relay-bin.000001,是数据同步出错, 可以stop slave; reset slave;reset master 重新进行从库关联; 注意观察 show slave status; 对于出错的table需要truncate掉;
以上是关于mysql主从复制的主要内容,如果未能解决你的问题,请参考以下文章