学无先后,达者为师

网站首页 mysql 正文

window server 系统下的mysql同步

作者:Neo胡哥 更新时间: 2022-07-16 mysql

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;

原文链接:https://blog.csdn.net/weixin_42485675/article/details/120707372

栏目分类
最近更新