Window环境搭建MySQL主从复制

1、安装多个MySQL服务

服务名称端口
MySQL8-Master3308
MySQL8-Slave3309

安装教程:https://blog.csdn.net/Session_s/article/details/123429189
在这里插入图片描述在这里插入图片描述

2、my.ini 配置

配置主从之间同步user_dborder_db库,并忽略初始库

2.1、master主库

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# 设置3308端口
port = 3308
# 设置mysql的安装目录
basedir=D:\JavaSoftware\Database\MySQL\Master Slave\Master-3308
# 设置mysql数据库的数据的存放目录
datadir=D:\JavaSoftware\Database\MySQL\Master Slave\Master-3308\data
# 允许最大连接数
max_connections=200
# 设置mysql服务端默认字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# MySQL 服务的唯一编号,每个 MySQL 服务的 id 需唯一
server-id=3308


# binlog 文件名
log-bin=mysql-bin

# 设置需要同步的数据库名
binlog-do-db=user_db
binlog-do-db=order_db
 
# 屏蔽数据库同步
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys

2.2、slave从库

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# 设置3309端口
port = 3309
# 设置mysql的安装目录
basedir=D:\JavaSoftware\Database\MySQL\Master Slave\Slave-3309
# 设置mysql数据库的数据的存放目录
datadir=D:\JavaSoftware\Database\MySQL\Master Slave\Slave-3309\data
# 允许最大连接数
max_connections=200
# 设置mysql服务端默认字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# MySQL 服务的唯一编号,每个 MySQL 服务的 id 需唯一
server-id=3309


# binlog 文件名
log-bin=mysql-bin
 
# 设置需要同步的数据库
replicate_wild_do_table=user_db.%
replicate_wild_do_table=order_db.%

# 设置忽略同步的数据库
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=sys.%

3、在从库创建只读权限的用户readonly

创建用户: readonly 密码:123456

CREATE USER `readonly`@`` IDENTIFIED BY '123456';

给用户readonly授予数据库order_dbuser_db的只读权限:

GRANT Select ON `order\_db`.* TO `readonly`@``; 
GRANT Select ON `user\_db`.* TO `readonly`@``;

4、设置主从

4.1 、连接主数据库

使用SHOW MASTER STATUS 查询主库的binlog文件名以及起始点position
在这里插入图片描述

4.2 、连接从数据库

1、使用STOP SLAVE;停止I/O 线程和SQL线程的操作
在这里插入图片描述

2、使用CHANGE MASTER TO命令配置slave连接master的信息
CHANGE MASTER TO MASTER_HOST='localhost',MASTER_PORT=3308,MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1044;

注:MASTER_LOG_FILEMASTER_LOG_POS通过步骤4.1查询主库数据得到。

在这里插入图片描述
3、使用START SLAVE;启动I/O 线程和SQL线程
在这里插入图片描述

4、查看从库状态:SHOW SLAVE STATUS;
在这里插入图片描述

Windows和Linux上搭建MySQL主从复制的步骤类似,但是需要注意一些操作系统差异和MySQL配置差异。下面是基本的搭建步骤: 1. 安装MySQL服务器 在Windows上可以下载MySQLWindows版安装包,直接安装即可。在Linux上可以使用apt、yum等包管理器安装MySQL,或者从官网下载源码编译安装。 2. 配置主库 在主库的my.cnf配置文件中添加以下配置: ``` [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=your_database_name ``` 其中,server-id表示主库的唯一编号,log-bin表示开启二进制日志,binlog-do-db表示只记录指定数据库的变更,your_database_name需要替换为实际的数据库名。 3. 配置从库 在从库的my.cnf配置文件中添加以下配置: ``` [mysqld] server-id=2 ``` 4. 在主库中创建复制用户 在主库中执行以下命令创建复制用户: ``` CREATE USER 'slave'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; ``` 其中,password需要替换为实际的密码。 5. 查看主库状态 在主库中执行以下命令查看当前的二进制日志文件名和位置: ``` SHOW MASTER STATUS; ``` 将输出类似于以下的信息: ``` +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | your_database_name | | +------------------+----------+--------------+------------------+ ``` 需要记录下File和Position的值,后面在从库中会用到。 6. 配置从库复制信息 在从库中执行以下命令配置主库的连接信息和复制起点: ``` CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='slave', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; ``` 其中,master_host_name需要替换为主库的IP地址或主机名,password为复制用户的密码,mysql-bin.000001和107为上一步中获取的主库状态信息。 7. 启动从库复制进程 在从库中执行以下命令启动复制进程: ``` START SLAVE; ``` 8. 验证复制状态 在从库中执行以下命令查看复制状态: ``` SHOW SLAVE STATUS; ``` 如果复制状态正常,会输出类似于以下的信息: ``` Slave_IO_State: Waiting for master to send event Master_Host: master_host_name Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 107 Relay_Log_File: slave-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ``` 其中,Slave_IO_Running和Slave_SQL_Running都应该为Yes,表示复制进程正常运行。 以上是简要的主从复制搭建过程,需要根据实际情况进行适当的调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值