window server 2019系统下mysql数据库双主同步和主从同步
- 一、双主同步
- 准备
- 步骤
- 1、建立账号并授权
- 2、 修改两个数据库的配置文件
- 3、分别重启Master A 和 Master B的mysql服务
- 4、分别查看两个实例的master状态
- 5、分别在两个实例上执行change master指令,指定同步位置:
- 6、解锁两个数据库实例的表和启动从服务器线程
- 7、分别查看从服务器状态
- 二、主从同步
- 准备
- 步骤
- 1、建立账号并授权
- 2、 修改两个数据库的配置文件
- 3、分别重启Master A 和 Slave B的mysql服务
- 4、查看实例Master A的状态
- 5、在主机B的实例上执行change master指令,指定同步位置:
- 6、解锁两个数据库实例的表和启动从服务器线程
- 7、在主机B上查看从服务器状态
- 三、同步问题的解决
- 附:数据库一些基本的操作:
一、双主同步
准备
准备两台电脑,都安装上window服务器系统2019,mysql服务器,8.0以上版本
1、服务器A:IP:10.114.200.222
2、服务器B:IP:10.114.200.223
步骤
1、建立账号并授权
在主机A上:
CREATE USER 'repl'@'10.114.200.223' IDENTIFIED WITH mysql_native_password BY 'repl2021';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.114.200.223';
flush privileges;
在主机B上:
CREATE USER 'repl'@'10.114.200.222' IDENTIFIED WITH mysql_native_password BY 'repl2021';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.114.200.222';
flush privileges;
2、 修改两个数据库的配置文件
分布更改两台设备上的数据库配置文件my.ini,注意得先删掉配置里面存在server-id 和 log-bin项目,要先删掉原来的,修改配置文件保存时,一定要保存ANSI格式的文件,不然mysql服务器重启不了。
在主机A上:
log-slave-updates
server-id=1
sync_binlog=1
auto_increment_offset=1
auto_increment_increment=2
slave-skip-errors=all
log-bin=mysql-bin
binlog-do-db=test (指定数据库,避免其它误操作导致同步出错,最好是指定数据库)
expire_logs_days = 7 //binlog过期清理时间,防止日志数量过大
在主机B上:
log-slave-updates
server-id=2
sync_binlog=1
auto_increment_offset=2
auto_increment_increment=2
slave-skip-errors=all
log-bin=mysql-bin
binlog-do-db=test(指定数据库,避免其它误操作导致同步出错,最好是指定数据库)
3、分别重启Master A 和 Master B的mysql服务
4、分别查看两个实例的master状态
在主机A上:
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 156
Binlog_Do_DB: db_rocky
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
在主机B上:
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000002
Position: 157
Binlog_Do_DB: db_rocky
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
5、分别在两个实例上执行change master指令,指定同步位置:
在主机A上:
mysql> change master to master_host='10.114.200.223',master_user='repl',master_password='repl2021', master_log_file='mysql-bin.000002',master_log_pos=157
在主机B上:
mysql> change master to master_host='10.114.200.222',master_user='repl',master_password='repl2021', master_log_file='mysql-bin.000001',master_log_pos=156
6、解锁两个数据库实例的表和启动从服务器线程
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
7、分别查看从服务器状态
Master A上:
mysql> show slave status\G;
*************************** 1. row ***************************
主要关注以下 2 个参数:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Master B上:
mysql> show slave status\G;
*************************** 1. row ***************************
主要关注以下 2 个参数:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
四个参数都为YES,说明mysql同步配置成功。
二、主从同步
准备
准备两台电脑,都安装上window服务器系统2019,mysql服务器,8.0以上版本
1、服务器A(主):IP:10.114.200.222
2、服务器B(从):IP:10.114.200.223
步骤
1、建立账号并授权
在主机A上:
CREATE USER 'repl'@'10.114.200.223' IDENTIFIED WITH mysql_native_password BY 'repl2021';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.114.200.223';
flush privileges;
2、 修改两个数据库的配置文件
分布更改两台设备上的数据库配置文件my.ini,注意得先删掉配置里面存在server-id 和 log-bin项目,要先删掉原来的,修改配置文件保存时,一定要保存ANSI格式的文件,不然mysql服务器重启不了。
在主机A上:
log-slave-updates
server-id=1
sync_binlog=1
slave-skip-errors=all
log-bin=mysql-bin
binlog-do-db=test (指定数据库,避免其它误操作导致同步出错,最好是指定数据库)
binlog_format = MIXED (设置可以使从库中的触发器也发生作用,statement,row两种其它模式根据实际使用情况设置)
expire_logs_days = 7 //binlog过期清理时间,防止日志数量过大
在主机B上:
log-slave-updates
server-id=2
sync_binlog=1
slave-skip-errors=all
log-bin=mysql-bin
3、分别重启Master A 和 Slave B的mysql服务
4、查看实例Master A的状态
在主机A上:
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 156
Binlog_Do_DB: db_rocky
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
5、在主机B的实例上执行change master指令,指定同步位置:
在主机B上:
mysql> change master to master_host='10.114.200.222',master_user='repl',master_password='repl2021', master_log_file='mysql-bin.000001',master_log_pos=156
6、解锁两个数据库实例的表和启动从服务器线程
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
7、在主机B上查看从服务器状态
在主机 B的实例上:
```sql
mysql> show slave status\G;
*************************** 1. row ***************************
主要关注以下 2 个参数:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
两个参数都为YES,说明mysql主从同步配置成功。
三、同步问题的解决
配置数据库主同步之后,运行一段时间可能会出现从库滞后主库很多的情况,需要对主、从库的数据库配置,才能解决此问题。主要配置的参数有:
1、
附:数据库一些基本的操作:
登录用户:mysql -uroot -p;
分配远程权限(适合8.0以上版本):
update mysql.user set host = '%' where user = 'root';
刷新权限:
flush privileges;
查询用户列表
select host,user,plugin,authentication_string from mysql.user;
创建用户(WITH mysql_native_password 是可选的,为了适应客户端兼容性)
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
设置/修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
alter user 'yzd'@'%' identified by 'aaa';
清除密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
UPDATE user SET authentication_string='' WHERE user='root';
删除用户
drop user 用户名@ localhost;
Delete FROM mysql.user Where User="用户名" and Host=”localhost”;
创建数据库
CREATE DATABASE IF NOT EXISTS yzd DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
查询数据库列表
show databases;
查询数据表列表
show tables;
查询当前用户名
select user();
查询当前用户权限
show grants;