下面是MySQL主从同步、读写分离配置步骤的详细攻略。
一、MySQL主从同步
1. 配置主服务器
在主服务器上,需要配置MySQL的主从同步参数,具体步骤如下:
-
编辑配置文件/etc/my.cnf,添加如下内容:
[mysqld]
log-bin=mysql-bin # 开启binlog日志
server-id=1 # 主服务器的唯一ID -
重启MySQL服务,使配置生效。
-
创建用于同步的账号,并授权其访问权限,例如:
grant replication slave on *.* to 'slave'@'%' identified by 'slavepwd';
flush privileges;
2. 配置从服务器
在从服务器上,需要配置MySQL的主从同步参数,具体步骤如下:
-
编辑配置文件/etc/my.cnf,添加如下内容:
[mysqld]
server-id=2 # 从服务器的唯一ID -
重启MySQL服务,使配置生效。
-
执行以下SQL语句,设置从服务器同步主服务器的参数:
change master to
master_host='主服务器IP',
master_user='slave',
master_password='slavepwd',
master_log_file='主服务器的binlog文件名',
master_log_pos=主服务器的binlog文件中的position值;
3. 同步数据
配置完成后,执行以下步骤,使从服务器同步主服务器的数据:
-
执行以下SQL语句,开启从服务器的同步功能:
start slave;
-
执行以下SQL语句,查看从服务器同步主服务器的状态:
show slave status\G;
如果状态为Slave_IO_Running和Slave_SQL_Running均为Yes,则表示同步成功。
二、MySQL读写分离
1. 配置主服务器
在主服务器上,需要配置MySQL的读写分离参数,具体步骤如下:
-
编辑配置文件/etc/my.cnf,添加如下内容:
[mysqld]
log-bin=mysql-bin # 开启binlog日志
server-id=1 # 主服务器的唯一ID -
重启MySQL服务,使配置生效。
2. 配置从服务器
在从服务器上,需要配置MySQL的读写分离参数,具体步骤如下:
-
编辑配置文件/etc/my.cnf,添加如下内容:
[mysqld]
server-id=2 # 从服务器的唯一ID
read-only=1 # 设置从服务器只可用于读取 -
重启MySQL服务,使配置生效。
3. 配置中间件
在中间件上,需要配置MySQL的读写分离参数,具体步骤如下:
-
安装MySQL Proxy,例如:
yum install mysql-proxy
-
编辑配置文件/etc/mysql-proxy.cnf,添加如下内容:
```
[mysql-proxy]
log-level = 1
log-file = /var/log/mysql/mysql-proxy.log
[proxy-backend-0]
address = 主服务器IP:3306
weight = 1
is_rw = yes
[proxy-backend-1]
address = 从服务器IP:3306
weight = 1
is_rw = no
[proxy-listener]
address = 0.0.0.0:3306
proxy-backend-addresses = proxy-backend-0,proxy-backend-1
```
其中,proxy-backend-0表示主服务器,proxy-backend-1表示从服务器。参数is_rw用于指定该服务器是否可用于写入操作。
- 启动MySQL Proxy:
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
4. 测试读写分离
配置完成后,执行以下步骤,测试读写分离是否生效:
-
执行以下SQL语句,连接中间件:
mysql -h 中间件IP -u 用户名 -p 密码
-
执行INSERT等写入操作,验证是否成功写入主服务器。
-
执行SELECT等读取操作,验证是否从从服务器中读取数据。
示例说明
示例一
假设主服务器IP为192.168.1.1,从服务器IP为192.168.1.2,中间件IP为192.168.1.3,要实现主从同步和读写分离。具体操作如下:
-
在主服务器上,编辑配置文件/etc/my.cnf,添加如下内容:
[mysqld]
log-bin=mysql-bin
server-id=1 -
在从服务器上,编辑配置文件/etc/my.cnf,添加如下内容:
[mysqld]
server-id=2
read-only=1 -
在中间件上,安装MySQL Proxy,并编辑配置文件/etc/mysql-proxy.cnf,添加如下内容:
```
[mysql-proxy]
log-level = 1
log-file = /var/log/mysql/mysql-proxy.log
[proxy-backend-0]
address = 192.168.1.1:3306
weight = 1
is_rw = yes
[proxy-backend-1]
address = 192.168.1.2:3306
weight = 1
is_rw = no
[proxy-listener]
address = 0.0.0.0:3306
proxy-backend-addresses = proxy-backend-0,proxy-backend-1
```
- 启动MySQL Proxy:
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
示例二
假设有多个从服务器,需要实现主从同步和读写分离。具体操作如下:
-
在主服务器上,编辑配置文件/etc/my.cnf,添加如下内容:
[mysqld]
log-bin=mysql-bin
server-id=1 -
在每个从服务器上,编辑配置文件/etc/my.cnf,添加如下内容:
[mysqld]
server-id=从服务器的唯一ID
read-only=1 -
在中间件上,安装MySQL Proxy,并编辑配置文件/etc/mysql-proxy.cnf,添加如下内容:
```
[mysql-proxy]
log-level = 1
log-file = /var/log/mysql/mysql-proxy.log
[proxy-backend-0]
address = 192.168.1.1:3306
weight = 1
is_rw = yes
[proxy-backend-1]
address = 192.168.1.2:3306
weight = 1
is_rw = no
[proxy-backend-2]
address = 192.168.1.3:3306
weight = 1
is_rw = no
...
[proxy-listener]
address = 0.0.0.0:3306
proxy-backend-addresses = proxy-backend-0,proxy-backend-1,proxy-backend-2,...
```
- 启动MySQL Proxy:
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL主从同步、读写分离配置步骤 - Python技术站