做同步主从数据库版本最好一致,或者从库版本高于主库。
主库配置:/etc/my.cnf
添加:
log-bin=mysql-bin //开启二进制日志
server-id = 1 //服务器id,主库一般为1
binlog-do-db = rootop //对rootop库记录二进制日志,一行一个。
binlog-ignore-db = mysql //排除二进制日志记录的库
配置主库允许远程连接,这里为了方便直接给最高权限:
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’IDENTIFIED BY ‘YourPassword’ WITH GRANT OPTION;
mysql> flush privileges; //刷新权限
mysql> flush tables with read lock; //锁定表,只读,保证数据一致,如果没有写入或者不重要可略过。
Query OK, 0 rows affected (0.19 sec)
mysql> show master status; //主服务器当前二进制日志名和偏移量
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000102 | 106 | networkq | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
mysql>
主库备份(mysqldump),还原到从库。
mysql> unlock tables; //解锁之前的锁定表,之前没做的话略过。
Query OK, 0 rows affected (0.28 sec)
从库配置:/etc/my.cnf
server-id = 2 //总之大于主库,不能重复
#master-host = 172.17.1.10 //主库ip
#master-user = root //主库同步的用户名
#master-password = YourPassword //同步用户名的密码
这3行绿色部分可以不用在my.cnf中体现,之后在mysql命令行中可配置。
master-port = 3306 //主库端口
master-connect-retry = 60 //连接主库重试时间
replicate-do-db = rootop //复制的库
replicate-do-db = DB_name //复制哪个库
replicate-ignore-db = DB_name //忽略哪个库
replicate-do-table = DB_name.TAB_name //复制表,有几个就写几行
replicate-ignore-table = DB_name.TAB_name //忽略的表
replicate-wild-do-table = DB_name.TAB_name //支持通配符复制表
replicate-wild-ignore-table = DB_name.TAB_name //忽略的表
绿色部分为所支持的参数。
保存退出,重启mysql服务!
进入mysql命令行执行:
mysql> slave stop; //停止从库复制状态
mysql> reset slave; //重置从库配置
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
-> master_host=’172.17.1.10′, //主库ip,注意结尾是 逗号
-> master_user=’root’, //主库有效的用户
-> master_password=’YourPassword’, //密码
-> master_log_file=‘mysql-bin.000102’, //之前记下的二进制日志名
-> master_log_pos=106; //偏移量,注意 没有单引号
Query OK, 0 rows affected (0.09 sec)
mysql> slave start; //启动复制
mysql> show slave status\G; //查看从库状态
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两项必须为两个YES才为成功。
参考手册:https://www.rootop.org/mysql5-1/replication.html
网上搜的一个检测脚本:
#!/bin/bash
mysql -uroot -pYourPassword -e “show slave status\G;” | grep -i Running | egrep “IO|SQL” | grep -i yes | wc -l
exit
保存为.sh文件,加执行权限,返回值为2说明从库正常,如果为其它值,要检查错误了。
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/1503.html