Mysql读写分离集群的搭建且与MyCat进行整合

老话说的好:不熟悉的东西不要不懂装懂,做人要坦诚,知道就是知道,不知道就是不知道。

 

言归正传,今天我们来聊聊 Mysql主从读写分离集群是如何搭建的,并且聊一下如何用 MyCat 去访问这个Mysql读写分离集群。

 

2. 场景介绍

服务器A IP:192.168.1.22

服务器B IP:192.168.1.12

 

服务器A 和 服务器B 都安装了Mysql,且初始化完成,关于Mysql在CentOS7的安装,可参见我的另一篇文章《MyCat的快速搭建》。

服务器B作为 Mysql 主服务,服务器A作为 Mysql 从服务器。

MyCat 安装在服务器A上。MyCat的安装也可参见我的另一篇文章《MyCat的快速搭建》。

 

3.  Mysql主从读写分离集群的搭建

3.1 修改 服务器B(主)配置文件

# vim /etc/my.cnf

Mysql读写分离集群的搭建且与MyCat进行整合

 

 

3.2 重启服务器B(主)的 Mysql 服务

# systemctl restart mysqld

 

3.3 修改 服务器A(从)配置文件

# vim /etc/my.cnf

Mysql读写分离集群的搭建且与MyCat进行整合

 

 

3.4 重启服务器A(从)的 Mysql 服务

# systemctl restart mysqld

 

3.5 在 服务器B(主)上创建同步账号并授权

# mysql -u root -p

mysql> create user 'repl'@'%' identified by 'Zhuifengren@123456';

mysql> grant replication slave on *.* to 'repl'@'%';

mysql> flush privileges;

 

3.6 在 服务器B(主)上进行锁表操作

# mysql -u root -p

mysql> flush tables with read lock;

 

3.7 在 服务器B(主)上找到 log-bin 的位置

# mysql -u root -p

mysql> show master status;

Mysql读写分离集群的搭建且与MyCat进行整合

 

3.8 将 服务器B(主)的 mysql 数据复制到 服务器A(从)

备份数据

# mysqldump --all-databases --master-data > dbdump.db -uroot -p

注意:刚才锁表的mysql客户端不要退出,重新开一个窗口!!!

传输数据文件

# scp dbdump.db root@192.168.1.22:/home

 

3.9 在 服务器A(从)还原 mysql 数据

# cd /home

# mysql < dbdump.db -uroot -p

注意:两台服务器mysql的版本务必一致,否则可能报错!!!

 

3.10 将 服务器B(主)上锁表操作取消

mysql> unlock tables;

 

3.11 在 服务器A(从)上设置主从同步配置

# mysql -u root -p

mysql> change master to
-> master_host='192.168.1.12',
-> master_user='repl',
-> master_password='Zhuifengren@123456',
-> master_log_file='zhuifengren_log.000001',
-> master_log_pos=1432;

 

mysql> start slave;

 

3.12 Authentication plugin 'caching_sha2_password' reported error 报错解决

如果发现主从数据没有同步,可以查看从库(服务器A)的同步日志

# cat /var/log/mysqld.log

 

如果有如下报错,则说明之前创建的 repl 账户密码加密方式有问题: 

Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061

 

解决办法:

进入 服务器B(主)的mysql客户端,修改用户密码的加密方式

# mysql -u root -p

mysql> alter user 'repl'@'%' identified WITH sha256_password by 'Zhuifengren@123456';
mysql> grant replication slave on *.* to 'repl'@'%';
mysql> flush privileges;

 

然后进入 服务器A(从)重启主从同步

# mysql -u root -p

mysql> stop slave;

mysql> start slave;

问题解决!!!

 

4. MyCat 配置读写分离

4.1 在之前的基础上修改MyCat配置

# cd /home/mycat/conf

# vim schema.xml

 

Mysql读写分离集群的搭建且与MyCat进行整合

 

其中 读库readHost 标签写在  写库writeHost 标签里面。

dataHost 标签中 balance 属性的含义如下:(摘抄自 MyCat 官网的权威指南)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzjjd.html