1.场景描述
废话不多说了,简单记录下mysql主从库配置,实现读写分离,还可以设置延迟同步,防止误操作,起到备库作用。。
2.解决方案
简单记录下如何快速对现有mysql库实现读写分离,至于可能遇到的数据不一致等问题,后续再解释,本次只介绍如何快速对现有mysql做主从库配置/读写分离。
2.1 原理
MySQL主从库或者读写分离配置,其实依靠的mysql自带二进制日志。
简单说就是在主库上做的动作(增删改)会全部记录在主库中的日志中,从库通过查询主库(主库要给权限)日志,然后照着主库日志再从库上操作一遍,这样就实现了主从复制。
说明:
两台服务器,每个上面一个数据库,主库ip:192.168.10.14,从库ip:192.168.10.16
2.2 主库设置(192.168.10.14):
(1)root下进入mysql用户
su - mysql
(2) 修改配置文件my.cnf ,并给从库设置日志查询权限。
vi /etc/my.cnf
server_id =14
log-bin=mysql-bin
binlog_do_db=test
:wq
#软件老王,重启mysql
service mysqld restart
创建用户并赋权:
GRANT replication slave ON *.* TO 'slave'@'%' identified by 'laowang';
(3)查看主库信息,后续从库中要配置
通过navicat或者直接连接myql查看下信息(/usr/local/mysql/bin/mysql -uroot -p mysql),后续从库中要用这个信息
show master status;
2.3 从库设置(192.168.10.16):
(1)修改/etc/my.cnf
vi /etc/my.cnf
server_id =16
log-bin=mysql-bin
binlog_do_db=test
:wq
#软件老王,重启mysql
service mysqld restart
(2)在secureCRT下操作,设置从库配置。
mysql>stop slave;
mysql>change master to
master_host='192.168.10.14',
master_user='slave',
master_password='laowang',
master_log_file='mysql-bin.000002',
master_log_pos=1236;
mysql>start slave;
mysql> show slave status;
(3)还可以设置延迟同步,以免误操作主从库数据都没有了,如下:延迟3分钟30分钟同步。
CHANGE MASTER TO MASTER_DELAY = 1800;单位为秒
2.4 验证
(1)分别在主库(14)和从库(16)的test数据库下创建测试表
CREATE TABLE `dfdaf` (
`dfafd` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2)对主库14进行操作,然后查询从库16,看是否同步过来了。
I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!
来源:CSDN
作者:软件老王
链接:https://blog.csdn.net/wjg8209/article/details/104774269