MySQL主从复制

数据库的读写分离的好处?

  1. 将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈;

  2. 主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发;

  3. 数据拥有多个容灾副本,提高数据安全性,同时当主服务器故障时,可立即切换到其他服务器,提高系统可用性

数据库主从复制

参考

MySQL主从复制与读写分离原理

配置

配置

master主服务器

1
2
3
4
5
# my.cnf中加入配置
[mysqld]
server-id=1 # 给数据库服务的唯一标识
log-bin=master-bin # 日志名
log-bin-index=master-bin.index # 日志索引

slave从服务器

1
2
3
4
5
# my.cnf中加入配置
[mysqld]
server-id=2 # 给数据库服务的唯一标识
log-bin=slave-relay-bin # 日志名
log-bin-index=slave-relay-bin.index # 日志索引
1
2
3
4
5
6
7
8
9
10
11
# 在命令行执行命令
stop slave;

change master to master_host='127.0.0.1',
master_port=3308,
master_user='root',
master_password='123456',
master_log_file='master-bin.000003',
master_log_pos=0;

start slave;

Master主数据库存在数据

1
2
3
4
5
6
7
8
9
10
11
(1)主数据库进行锁表操作,不让数据再进行写入动作
mysql> FLUSH TABLES WITH READ LOCK;

(2)查看主数据库状态
mysql> show master status;

(3)记录下 FILE 及 Position 的值。
将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器,建议通过tar归档压缩后再传到从服务器解压。

(4)取消主数据库锁定
mysql> UNLOCK TABLES;

校验

1
2
3
# slave服务器查看
show slave status
# 其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
 上一篇

netty 网络通讯