Rootop 服务器运维与web架构

mysql复制 (主从同步、单向同步)

| 暂无评论

做同步主从数据库版本最好一致,或者从库版本高于主库。

主库配置:/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

作者:Venus

服务器运维与性能优化

发表回复