如何搭建读写主从数据库
### 原理
1.主服务器建立二进制日志,每产生语句或磁盘变化写进日志
2.从服务器建立relaylog
3.主服务器创建 授权复制账号,从利用复制账号来监听主服务器的二进制日志
具体原理参考:https://mp.weixin.qq.com/s/8dXHIq3P-kYSgF3o9zhZ8Q
1. 修改主数据库的配置文件my.cnf,如下修改,修改后的重启数据库
#主数据库的配置
#定义Mysql服务的唯一标识 每个mysql服务Id需唯一
server-id=100
#开启mysql binlog功能
log-bin=mysql-bin
#设置binlog的日志格式,格式分别 statement row mixed。通常使用row
binlog-format=row
#此参数表示只记录指定数据库的二进制日志,默认全部记录。
binlog-do-db=mydatabase

2. 修改主数据库的配置文件my.cnf,如下修改,修改后的重启数据库
#从服务器的配置
#定义Mysql服务的唯一标识 每个mysql服务Id需唯一
server-id=200
#启用中继日志,其中mysql-relay表示日志的文件名称,文件存放在datadir参数指向的目录下面
relay-log=mysql-relay
#指定只读
read-only=1
#需要复制的数据库
replicate-do-db=mydatabase

3.在主数据库创建 授权复制账号
grant replication client,replication slave on *.* to 'repl'@'%' identified by 'r123456';
FLUSH PRIVILEGES;

4.登入主数据库,查看binlog的日志及位置
#查看master的状态看,尤其是当前的日志及位置
show master status;

5.登入从数据库,利用账号复制主数据库的binlog, sql语句
change master to
master_host='172.172.0.10',
master_user='repl',
master_password='r123456',
master_log_file='mysql-bin.000289',
master_log_pos=322;

6.在从数据库上启动复制
start slave;

其他:
#查看master的状态看,尤其是当前的日志及位置
show master status;
#查看从服务器状态
show slave status;
#启动从服务器状态(开始监听master的变化)
start slave;
#停止slave状态
stop slave;
#重置从服务器 的状态
reset slave;