Mycat读写分离实战
一、主从复制搭建
1.实验环境
- 搭建一主一从的部署架构,master(主库)运行在阿里云服务器 47.108.136.201,slave(从库)运行在 IP 地址为 12.168.149.128 的Ubuntu虚拟机中
- 两台机器均安装了 MySQL 5.7(MySQL 5.7 版本复制性能比较强,且不同版本的数据库搭建主从复制,需要一些额外的复杂配置)
- 两台机器能够Ping通
2.主库配置
(1)修改数据库配置参数
#vi /etc/mysql/my.cnf 或 vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=100 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
binlog_format=row
重启 MySQL 服务,查看服务号,已经更改为 100
root@Ubuntu2004:~# systemctl restart mysql
root@Ubuntu2004:~# mysql -u root -p
mysql> show global variables like 'server\_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 100 |
+---------------+-------+
1 row in set (0.00 sec)
(2)进入主库,建立复制账号并授权
不同 MySQL 版本,需要执行不同的授权操作
mysql> grant replication client on *.* to 'xiaogesync'@'%' identified by 'Chen_2877';
mysql> flush privileges;
MySQL 8 执行以下操作
mysql> create user xiaogesync identified by 'Chen_2877';
mysql> grant replication client on *.* to 'xiaogesync'@'%';
mysql> flush privileges;
重启
root@Ubuntu2004:~# systemctl restart mysql
在虚拟机终端执行 MySQL 远程连接,输入授权账户和密码,即可远程访问主库了
root@ubuntu:/home/chen# mysql -h 47.108.136.201 -uxiaogesync -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 5.7.36-log MySQL Community Server (GPL)
2.从库配置
(1)修改数据库配置参数
跟主库同样的操作,但 server-id 必须唯一,用于标识语句最初是由哪个 server 写入,server-id 设为相同的话,同步可能会陷入死循环
#vi /etc/mysql/my.cnf 或 vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=101 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
binlog_format=row
(2)在服务器终端查看主库master状态
需要注意 File: mysql-bin.000005 和 Position: 1224 这两个值,待会配置从服务器会用得到。这个时候不要去动主数据库,会影响 Position 的值
mysql> show master status\G;
*************************** 1. row *****************