2019独角兽企业重金招聘Python工程师标准>>>
一、准备工作
1、环境 CentOS7,Mysql5.7
2、在主数据库上创建好库和表,导出库表,再导入到从数据库,保持主从库的数据和库结构一致。
二、主从配置部步骤
1、配置root用户可远程连接,方便进行使用可视化工作进行测试(可以不配置)
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Root123!@#' with grant option;
mysql> flush privileges;
2、(主库)添加新用户 uslave,分配置REPLICATION SLAVE权限,专门用于主从复制,当时也要允许远程登录
mysql> CREATE USER 'uslave'@'%' IDENTIFIED BY 'Uslave123!@#';
mysql> grant REPLICATION SLAVE ON *.* TO 'uslave'@'%';
3、(主从都要配置)开启mysql配置的端口:3306
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# firewall-cmd --reload
4、(主库)修改 /etc/my.cnf配置
log-bin=mysql-bin #[必须]启用二进制日志
server-id=1 #[必须]服务器唯一ID,默认是1
binlog-do-db=test #需要同步的库
replicate-do-db=test #需要同步的库
binlog-ignore-db = information_schema #不需要同步的库
binlog-ignore-db = performance_schema #不需要同步的库
binlog-ignore-db = sys #不需要同步的库
binlog-ignore-db = mysql #不需要同步的库
重启mysql
# systemctl restart mysqld
5、(主库)查看主库状态,如下表示已经配置好了,字段 File和Position在配置从库的时候会用到
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
6、(从库)修改 /etc/my.cnf配置
log-bin=mysql-bin #启用二进制日志
server-id=2 #[必须]服务器唯一ID,要比主库大
7、在从库中添加主库配置信息,并且启动从库同步 会用到上面的file和position字段
mysql> change master to
-> master_host='192.168.137.20',
-> master_user='uslave',
-> master_password='uslave123!@#',master_log_file='mysql-bin.000001',master_log_pos=154;
mysql> start slave;
mysql> show slave status\G
会看几个参数如下:
Slave_IO_Running:yes
Slave_SQL_Running:yes
...
Last_IO_Error:0
Last_SQL_Error:0
这样表示是成功。
这两项都必须是Yes,如果Slave_SQL_Running为No,可能在slave上进行了写操作或者事务回滚报错 可以通过以下办法来解决
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
mysql> show slave status;
配置成功之后重启一下从库
8、接下来就是验证配置是否成功 通过脚本修改主库数据库的内容,再查询从库是否同时改变内容