mysql主从同步
我是在同一台windows安装的两个mysql服务。
1.首先正常安装第一份mysql,默认端口是3306;
2.复制一份文件到另外的路径下(建议使用不同的磁盘)
3.然后修改里面的配置文件,例如
[client] default-character-set=utf8mb4 port=3307 [mysqld] basedir=E:\mysql-5.7.25-winx64 datadir=E:\mysql-5.7.25-winx64\data port=3307 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB [mysql] default-character-set=utf8mb4
我把从库的端口设置为3307,安装到E盘;主库安装到D盘的。
4.在cmd中执行以下命令,安装服务
mysqld install mysql2 --defaults-file="E:\mysql-5.7.25-winx64/my.ini"
5.修改注册表的服务路径,不然启动的还是mysql 3306的服务
在cmd中运行regedit进入注册表管理
找到
HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->Services
里面有刚刚创建的mysql2服务
最后修改下红框的路径即可,一般只需修改前面的。
至此,两个mysql服务已经完成。接下来就是配置主从同步。
一:修改主库配置文件
[client] default-character-set=utf8mb4 [mysqld] basedir=D:\mysql-5.7.25-winx64 datadir=D:\mysql-5.7.25-winx64\data port=3306 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 主库配置 server-id = 1 binlog-do-db = hangfiretest #要同步的数据库 #binlog-ignore-db = mysql #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的 log-bin = mysql-bin #要生成的二进制日记文件名称 [mysql] default-character-set=utf8mb4
主库配置如上。
二:修改从库配置文件
[client] default-character-set=utf8mb4 port=3307 [mysqld] basedir=E:\mysql-5.7.25-winx64 datadir=E:\mysql-5.7.25-winx64\data port=3307 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 从库配置 server-id=2 #要同步的数据库 replicate-do-db = hangfiretest #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的 #binlog-ignore-db = mysql #要生成的二进制日记文件名称 log-bin = mysql-bin [mysql] default-character-set=utf8mb4
其中要注意server-id不能相同。
三:配置主库新用户,只具有同步的权限
create user 'repl'@'127.0.0.1' identified by 'admin'; GRANT REPLICATION SLAVE ON *.* TO 'rep'@'127.0.0.1'; //这里可以指定具体数据库(hangfiretest.*) 我这里是指定的全部数据库权限 //例如GRANT REPLICATION SLAVE ON hangfiretest.* TO 'rep'@'127.0.0.1';
四:准备备份主库数据库
保持主从mysql的hangfiretest数据库初始状态一致
一般是先将所有的表加锁(只读),然后copy磁盘上的数据库文件夹。我这里直接停止服务,然后将数据文件拷贝过去
你也可以通过Navicat直接备份一个,然后还原过去。
然后在主数据库里面运行show master status\G(注意有\G后面不加;,否则报错<no query specified>) 记下file和position字段对应的参数
五:在从库设置它的master
同样cmd在mysql从服务 bin目录执行
E:\mysql-5.7.25-winx64\bin>mysql -uroot -padmin
然后执行
change master to master_host='127.0.0.1', master_port=3306, master_user='rep', master_password='admin', master_log_file='mysql-bin.000001', master_log_pos=609;
注意:master_port对应主库的端口,master_log_file和master_log_pos对应刚才show master status记下的参数。
六:在从库开启从数据库复制功能
start slave; (mysql5.5是slave start;启动)
在从库可以通过show slave status\G来查看一些参数。
发现红框是运行的就ok。
如果第一个未运行可以参考:https://www.jb51.net/article/39935.htm
最后测试是否成功;左图为主库,右图为从库
大部分参考至https://www.jianshu.com/p/0d07b446ae33