一、 主从复制原理
1. master 主库 开启binlog日志
2. slave 从库
从库中开启 IO线程 和 sql线程 IO线程复制主库的binlog日志的命令至本机的relay-log文件(中继日志)里面
sql线程 执行本机中的relay-log文件中的sql语句实现主从数据一致
二、构建思路
三、配置主从
1.添加配置(主库从库都要配置)
vim /etc/my.cnf [mysqld] server_id=51 //server_id(每个数据库的不能一样) log-bin=master51 //日志名
2. 主库授权 给予复制数据的权限
mysql -uroot -p密碼 mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
3. 配置从库
(1)查看主库的 binlog日志的偏移量
show master statusG’;
(2)指定从库server_id (不能和MySQL主库的server_id 一致)
(3)备份主库的数据(由于slave只能备份 开启主从之后的数据如果想要 主库和从库的数据一致的话就要完全备份 主库数据)
mysqldump -uroot –p密码 --master-data 数据库名 > /allbak.sql //在主服务器上备份数据 ]# scp /allbak.sql root@192.168.4.52:/root/ //将备份文件拷贝给从服务器 mysql> create database 数据库名 ; //在从服务器上创建与主服务器同名的数据库 ]# mysql -uroot –p密码 数据库名 < /root/allbak.sql //从服务器使用备份文件恢复数据 ]# vim /root/allbak.sql //在从服务器查看备份文件中的binlog日志信息
4. 在从库上指定主库信息
mysql -uroot –p密码 //管理员root 本机登录 mysql> show slave status; //查看状态信息,还不是从服务器 Empty set (0.00 sec) mysql> change master to //指定主服务器 -> master_host=“192.168.4.51”, //主服务器ip地址 -> master_user=“repluser”, //主服务器授权用户 -> master_password=“123qqq…A”, //主服务器授权用户密码 -> master_log_file=“master51-bin.000001”,//主服务器日志文件 -> master_log_pos=441; //主服务器日志偏移量
mysql> start slave
mysql> show slave statusG
5. 开启 start slave
四、主从从
如果是做主从从的话那么需要在即做主库又做从库的服务器的配置文件中加上 log_slave_updates 允许级联复制
五、复制模式
改为半同步复制
(1)查看是否允许动态加载模块
(2)命令行加载插件
(3)启用半同步复制
4.配置永久的半同步复制
六、还原
/var/lib/mysql/master.info /var/lib/mysql/relay-log.info /var/lib/mysql/主机名-relay-bin.* (2个数字结尾的文件和一个index结尾的文件)
删除这四类文件就可以还原从库