hi,欢迎访问本站!
当前位置: 首页系统/服务器正文

win10下测试mysql主从同步

墨初 系统/服务器 1阅读

win10下测试mysql主从同步 1. 准备工作1.1 下载MySQL1.2 解压zip文件到指定目录 2. 安装mysql2.1主库master2.1.1初始化2.1.2注册服务2.1.3启动服务和停止服务2.1.4 连接mysql2.1.5修改密码2.1.6创建用于同步的账号2.1.7 查看主库状态 3.从库Slave4.准备开启主从同步4.1查看master和slave各自目录 xxx/data/auto.cnf4.2设置从库从哪里同步即设置master4.3 开始主从同步4.4 查看同步状态 一些报错:

1. 准备工作 1.1 下载MySQL

首先去下载安装MySQL,这里使用的是MySQL5.7.32版本。下载地址:mysql下载地址。这里我下载的是这个版本。

1.2 解压zip文件到指定目录 在D盘下新建test文件夹,然后在test文件夹下分别新建mysql-master和mysql-slave文件夹;将下载好的zip文件分别解压进去;然后在mysql-master和mysql-slave文件夹下分别新建data目录和my.ini文件; 如图:(mysql-slave文件夹下和图上所示一样)填写mysql-master中的my.ini文件,内容如下 [client]# 设置mysql客户端默认字符集default-character-set=utf8[mysqld]server_id=3explicit_defaults_for_timestamp=truelog-bin=master-binbinlog-format=ROW#表示不需要备份的数据库为mysqlbinlog-ignore-db=mysql#设置免密码登录#skip-grant-tables# 设置端口port = 1234# 设置mysql的安装目录basedir=D:\\test\\mysql-master# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\\test\\mysql-master\\data# 允许最大连接数max_connections=20# 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8# 创建新表时将使用的默认存储引擎default-storage-engine=INNODBsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 填写mysql-slave中的my.ini文件,内容如下 [client]# 设置mysql客户端默认字符集default-character-set=utf8 [mysqld]server_id=4log-bin=slave-binbinlog-format=ROW#设置免密码登录#skip-grant-tables# 设置端口port = 5678# 设置mysql的安装目录basedir=D:\\test\\mysql-slave# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错datadir=D:\\test\\mysql-slave\\data# 允许最大连接数max_connections=20# 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8# 创建新表时将使用的默认存储引擎default-storage-engine=INNODBsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 2. 安装mysql

管理员身份打开命令行cmd 否则可能因为权限不足报错

2.1主库master

管理员权限打开控制台cmd,进入目录bin下执行以下命令:

2.1.1初始化 mysqld --initialize --console 如果报错,–initialize specified but the data directory has files in it. Aborting。那么就用普通的cmd方式进入master下的bin目录,再次执行此命令即可。目前我也闹不清为啥管理员权限下执行此命令就会报错。为避免初始化错误,配置文件中的路径最好使用’\\’ 2.1.2注册服务

以下命令是在管理员权限下进入bin目录中执行的。

mysqld --install testMaster --defaults-file="D:\test\mysql-master\my.ini" 2.1.3启动服务和停止服务

管理员权限下。

net start testMaster net stop testMaster 2.1.4 连接mysql

要先在管理员权限下启动mysql服务

mysql -uroot -P1234 -p[上面截图中的初始密码] 2.1.5修改密码 alter user 'root'@'localhost' identified by '123456';

刷新权限

flush privileges; 2.1.6创建用于同步的账号

这一步可以不做,我直接用的root。当然创建一个新账号是最安全的,但是涉及到数据库权限,我当时在新账号下连接数据库没有对数据库增删改的权限,于是在下面同步的时候直接用的root账户。

create user 'zls'@'%' identified by '123456';grant replication slave on *.* to 'zls'@'%' identified by '123456';flush privileges; 2.1.7 查看主库状态 show master status; 3.从库Slave

像操作主库一样进行初始化,安装,启动等操作

3.1 初始化:mysqld --initialize --console3.2 注册服务mysqld --install testSlave --defaults-file="D:\test\mysql-slave\my.ini"3.3 启动服务net start testSlave3.4 连接mysql mysql -uroot -P5678 -p[初始化生成的密码]3.5 修改密码: alter user 'root'@'localhost' identified by '123456';flush privileges;3.6 创建用于同步的用户账号:create user 'zls'@'%' identified by '123456';flush privileges;3.7 查看从库状态show slave status; 4.准备开启主从同步 4.1查看master和slave各自目录 xxx/data/auto.cnf

如果两个文件一致,则修改slave从库的auto.cnf 使得两个库的值不一致

[auto]server-uuid=049b7b4c-36c5-11eb-bbbf-e454e8d43410 4.2设置从库从哪里同步即设置master change master to master_host='localhost',master_port=1234,master_user='root',master_password='123456',master_log_file='master-bin.000002',master_log_pos=810;

这里要记住master_log_file和master_log_pos参数对应的值是show master status; 命令中显示的值,主库每次重启以后,这个值都会发生改变,要重新修改再执行此命令。 参数详解:

master_host: 主服务器的IPmaster_user: 主服务器上新创建的用户名master_password: 用户的密码master_port: 主服务器的端口,如果未曾修改,默认即可。master_log_file:主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File值master_log_pos:同步位置 4.3 开始主从同步 start slave;stop slave; 4.4 查看同步状态 show slave status\G

注意,主从同步成功的标志: IO线程和SQL线程都是成功运行的

Slave_IO_Running: YesSlave_SQL_Running: Yes

文章转自:一台Windows10下搭建Mysql主从同步详细步骤–亲测可用

一些报错: Slave_IO_Running: NO,可以看这篇:mysql主从复制之异常解决。首先配置文件中的server_id不能相同,如果相同,修改一下即可。其次就是uuid不能相同。The slave I/O thread stops because master and slave have equal MySQL server UUIDs;这篇和上一篇差不多,就是多了几个查看配置的命令。uuid报错。Slave_IO_Running: Yes和Slave_SQL_Running: Yes。但是主从不同步。解决方法。mysql主从数据库不同步的解决思路。 方法一:跳过错误(建议)(错误有可能是主库中原有一些数据,然后导致做主从的时候,主库一开始的数据同步不过来。)stop slave; #表示跳过一步错误,后面的数字可变 set global sql_slave_skip_counter =1; start slave; 之后再用mysql> show slave status\G 查看: Slave_IO_Running: Yes Slave_SQL_Running: Yes ok,现在主从同步状态正常了。。。 方法二:重新做主从同步。2.1.2中注册的服务,win+r打开运行窗口,输入services.msc,在服务列表中都可以看到。如果测试完主从同步,想删除无用的服务。可以使用以下方法 1)win7系统,管理员权限进入cmd执行命令sc delete 服务名称 2)win10解决方法: 打开注册表(win+r输入 regedit): 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 在这里边找到要删除的无用的服务,直接删除。然后重启电脑就没了。
标签:
声明:无特别说明,转载请标明本文来源!