Mysql 5.7一主一从同步配置(一主多从配置类似)(亲测) 有更新!
- 1、准备工作
- 2、配置主、从数据库配置文件,使之支持主从同步
- 2.1、主服务器配置,在mysql配置文件/etc/my.cnf的[mysqld]下添加如下配置项:
- 2.2、从服务器配置,在mysql配置文件/etc/my.cnf的[mysqld]下添加如下配置项:
- 3、创建授权用户
- 4、同步开始
- 4.1、主库操作:
- 4.2、从库操作:
1、准备工作
准备两台已经安装 Mysql5.7.23数据库的服务器,配置如下:
192.168.200.7(主)
192.168.200.11(次)
并在两台机器上把要同步的数据库创建好,名字务必完全一样,比如数据库名字 database-A
2、配置主、从数据库配置文件,使之支持主从同步
2.1、主服务器配置,在mysql配置文件/etc/my.cnf的[mysqld]下添加如下配置项:
#主从配置
#server_id是服务器唯一标识
server_id = 111
log_bin = mysql_bin
#不需要备份的数据库
binlog_ignore_db = mysql
#需要备份的数据库
binlog_do_db = database-A
#存储二进制日志的缓存大小
binlog_cache_size = 1M
#主从复制的格式(mixed, statement, row 默认statement)
binlog_format = mixed
#二进制日志自动删除/过期的天数,默认为0表示不删除
expire_logs_days = 0
2.2、从服务器配置,在mysql配置文件/etc/my.cnf的[mysqld]下添加如下配置项:
#主从配置
#server-id是服务器唯一标识
server_id = 112
log_bin = mysql_bin
#不需要备份的数据库
replicate_ignore_db = mysql
#需要备份的数据库(这里数据库名字和主库配置保持一样)
replicate_do_db = database-A
3、创建授权用户
使用mysql的root账号创建一个专门进行数据同步的mysql账号slave,并设置密码为 ‘admin’
mysql -u root -p
grant replication slave on *.* to 'slave'@'%' identified by 'admin';
4、同步开始
4.1、主库操作:
mysql> show variables like 'log_bin';#查看log_bin是否开启
log_bin的状态是ON表示已开启
mysql> `show master status ;` #查看master状态
Binlog_Do_DB是需要同步的数据库,这里忽视sunmi-merchant,应该正确展示上面的database-A
4.2、从库操作:
mysql> `reset slave;` #清除此前可能存在的同步
mysql> `stop slave;` #停止同步,默认同步是开启的
mysql> `change master to master_host='192.168.200.7',master_user='slave',master_password='admin',master_log_file='mysql_bin.000002',master_log_pos=3752;`
注:
master_host表示主库的IP
master_user表示主库master上同步的用户slave
master_password表示同步slave的密码
master_log_file表示从哪个binlog文件开始同步
master_log_pos表示从该binlog文件的哪个pos节点位置开始同步
其中master_log_file和master_log_pos就是主库设置中记录的binlog文件名和pos位置节点
查看同步状态:
如果Slave_IO_Running:Yes 和Slave_SQL_Running: Yes 都为Yes,说明配置成功
运行以下命令开始复制;
mysql> `start slave;`
执行没有错误,再执行
mysql> `show slave status\G;`
一主多从和一主一从配置类似,只需要新增一个从服务器192.168.200.12的配置,主服务器的配置不用做任何修改。