一、mysql数据库双机互为主从设置
前言
1.环境windows
2.数据库8.0
3.服务器1:192.168.12.1
4.服务器2:192.168.12.2
1. 设置数据库的配置文件
对文件名:my.ini进行修改
服务器1:192.168.12.1配置文件设置
[mysql] 下添加如下
server-id=1 #任意自然数n,只要保证两台MySQL主机不重复就可以
log_bin=master-bin #开启二进制日志
auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL
binlog-ignore=mysql #忽略mysql库
binlog-ignore=information_schema #忽略information_schema库
replicate-do-db=test #要同步的数据库,默认所有库
服务器2:192.168.12.2配置文件设置
[mysqld]下添加如下
server-id=2 #任意自然数n,只要保证两台MySQL主机不重复就可以
log_bin=master-bin #开启二进制日志
auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=2 #起始值。一般填第n台主MySQL。此时为第一台主MySQL
binlog-ignore=mysql #忽略mysql库
binlog-ignore=information_schema #忽略information_schema库
replicate-do-db=test #要同步的数据库,默认所有库
2. 对库1和库2用户,进行授权
服务器1对服务器2的用户授权,允许服务器2对服务器1的数据库进行操作
进入数据库创建
CREATE USER 'slave'@'192.168.12.%' IDENTIFIED BY '123456';
mysql > grant replication slave on *.* to 'slave'@'192.168.12.2(#指定库2的地址访问)' identified by 'aA123.com(#密码)';
mysql > exit
systemctl restart mysqld # 重启数据库 (目的:刷新新创的用户、刷新刚刚的配置文件,例如开启了日志文件)
服务器2对服务器1的用户授权,允许服务器1对服务器1的数据库进行操作
进入数据库创建
CREATE USER 'slave'@'192.168.12.%' IDENTIFIED BY '123456';
mysql > grant replication slave on *.* to 'slave'@'192.168.12.1(#指定库1的地址访问)' identified by 'aA123.com(#密码)';
mysql > exit
systemctl restart mysqld # 重启数据库 (目的:刷新新创的用户、刷新刚刚的配置文件,例如开启了日志文件)
3. 查看生成的binlog日志,记录下来日志名字和起始位置。
服务器1
进入数据库
mysql> show master status\G
记住日志名字和起始位置
服务器2
进入数据库
mysql> show master status\G
4. 进入数据库进行从读设置,指定要读的主服务库的地址、用户、密码、日志等
服务器1
mysql> \e
CHANGE MASTER TO
MASTER_HOST='192.168.12.1', # 指定库2的地址
MASTER_USER='tese', # 指定库2创建的用户名
MASTER_PASSWORD='aA123com', # 指定库2创建的密码
MASTER_LOG_FILE='mysql-bin.000002', # 指定库2的日志文件名
MASTER_LOG_POS=301; # 指定库2的日志起始位置307
服务2
mysql> \e
CHANGE MASTER TO
MASTER_HOST='192.168.12.1', # 指定库1的地址
MASTER_USER='tese', # 指定库1创建的用户名
MASTER_PASSWORD='aA123com', # 指定库1创建的密码
MASTER_LOG_FILE='mysql-bin.000002', # 指定库1的日志文件名
MASTER_LOG_POS=321; # 指定库1的321
5. 启动复制,并查看。
服务器1启动查看
mysql > start slave; #启动
mysql > show slave status\G #查看
服务器2启动查看
mysql > start slave; #启动
mysql > show slave status\G #查看
如下所图出现两项都是YES,则说明已成功