mysql 主从复制配置,主要用于双(多)机热备份,所有读写操作都在主库上执行,从库只对主库的数据进行复制。而读写分离配置,除了具备主从备份的功用,更重要的是读和写操作的分离,即主库只写,从库只读,从而减轻了单机的I/O压力。值得注意的是,主从备份不能保证历史数据的备份,因此日常的离线备份还是应该执行。
基本信息
项 | 说明 |
---|---|
系统版本 | centos 7 x64 |
mysql版本 | 5.6.35 |
master机 | 192.168.100.201 |
slave机 | 192.168.100.202 |
操作步骤
1. 在master主库上的配置
vim /etc/my.cnf
# 在 [mysqld] 下添加如下配置
# 给服务器起一个唯一的id
server-id=1
# 开启二进制日志
log-bin=mysql-binlog
# 指定日志格式
binlog-format=mixed
# 重启mysql
sudo service mysql restart
2. 在slave从库上的配置
vim /etc/my.cnf
# 在 [mysqld] 下添加如下配置
# 给服务器起一个唯一的id
server-id=2
# 从服务器中继日志
relay-log=mysql-relaylog
# 重启mysql
sudo service mysql restart
3. 在master主机上分配从库复制的帐号权限
GRANT REPLICATION CLIENT, REPLICATION SLAVE on *.* to USERNAME@'192.168.100.202' IDENTIFIED BY 'PASSWORD';
# 其中是 USERNAME 是帐号名,PASSWORD 是密码
4. 在master主机检查master状态
# 登录mysql后执行
show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-binlog.000001 | 354 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记住 File 和 Position 两项值,此处分别为 mysql-binlog.000001 和 354。
注意,此命令执行后,不要再操作master主机,防止状态值变化。
5. 在slave从主机上配置
# 登录mysql后执行
change master to
master_host=’192.168.100.201’,
master_user=’USERNAME’,
master_password=’PASSWORD’,
master_log_file=’mysql-binlog.000001’,
master_log_pos=354;
# 启动slave主库
slave start
# 此处 master_log_file 和 master_log_pos 即上文中的 File 和 Position值。
6. 在slave从库上进行状态检查
# 登录mysql后执行
show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.100.201
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-binlog.000001
Read_Master_Log_Pos: 354
Relay_Log_File: mysql-relaylog.000002
Relay_Log_Pos: 286
Relay_Master_Log_File: mysql-binlog.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
...
...
1 row in set (0.00 sec)
# 其中,重点看以下两项配置:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
此两项必须都为YES,才说明主从配置成功。