主从复制数据库安装
刚开始只有一个
一、复制一份之前安装的安装目录,并修改名称为 mysql-5.7.20-winx64-s1
修改配置文件 my.ini
修改端口号和目录
然后使用安装脚本
管理员运行cmd(可能不行)
mysqld install mysqls1 --defaults-file="D:\RuanJianKaiFa\mysql\mysql-5.7.20-winx64-s1\my.ini"
二、或者使用安装脚本命令
D:
cd D:\RuanJianKaiFa\mysql\mysql-5.7.20-winx64-s1\bin
mysqld --initialize-insecure --user=mysqls1
mysqld -install
net start mysql
mysql -u root -p
修改密码脚本命令
D:
cd D:\RuanJianKaiFa\mysql\mysql-5.7.20-winx64-s1\bin
mysqladmin -uroot -p password
安装成功
主库配置
# 主从同步配置
#主库开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 1
#设置需要同步的数据库
binlog-do-db=user_db
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
注意:注意:注意:注意:注意:注意:注意:
如果需要多个主库同步到从库,主库可以配置多个 binlog‐do‐db
# 主从同步配置
#主库开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 1
#设置需要同步的数据库
binlog-do-db=user_db
binlog-do-db=store_db
binlog-do-db=product_db_1
binlog-do-db=product_db_2
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
从库可以配置多个 replicate_wild_do_table 接收主库
#开启日志 从库配置
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 2#设置需要同步的数据库
replicate_wild_do_table=user_db.%
replicate_wild_do_table=store_db.%
replicate_wild_do_table=product_db_1.%
replicate_wild_do_table=product_db_2.%#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
从库配置
#开启日志 从库配置
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 2
#设置需要同步的数据库
replicate_wild_do_table=user_db.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
主库和从库都重启服务
连接从库
三,授权主从复制专用账号
主库操作
主库的用户
执行创建用户的命令 连接主库后执行
-- 授权主备复制专用账号
GRANT REPLICATION SLAVE ON *.* TO 'db_sync' @'%' IDENTIFIED BY 'db_sync';-- 刷新权限
FLUSH PRIVILEGES;
主库创建用户成功
确认位点 记录下文件名以及位点
-- 确认位点 记录下文件名以及位点
show master status;
从库操作
-- 先停止同步
STOP SLAVE;
修改从库指向到主库,使用上一步记录的文件名以及位点
#修改从库指向到主库,使用上一步记录的文件名以及位点
CHANGE MASTER TO
master_host = 'localhost',
master_user = 'db_sync',
master_password = 'db_sync',
master_log_file = 'mysql-bin.000001',
master_log_pos = 154;
执行成功
启动同步
START SLAVE;
-- 查看从库状态Slave_IO_Runing和Slave_SQL_Runing都为Yes说明同步成功,如果不为Yes,请检查error_log,然后排查相关异常。
show slave status
都是yes才行
请注意,主从MySQL下的数据(data)目录下有个文件auto.cnf,文件中定义了uuid,要保证主从数据库实例的uuid不一样,建议直接删除掉,重启服务后将会重新生成。
从库目录找到auto.cnf,由于是从库是复制的主库,这里文件是一样的,里面有一个uuid
将这个文件删除后重启服务,会从新生成此文件
重新生成文件
再次查看 都是yes 了
测试 是否同步成功
添加主库数据,去从库数据,看从库数据是否修改
同步成功
注意 注意 注意
配置的数据库和要同步的库要一样