致敬大佬!!!
原文地址:https://blog.csdn.net/Jack_young_/article/details/84957583;
https://blog.csdn.net/u010509052/article/details/80449134
mysql主从复制同步
一、下载mysql
(https://dev.mysql.com/downloads/mysql/)5.5版本以上(符合mycat 版本)。
二、mysql两个以上
在两台windows上分别安装mysql或者一台电脑上安装两个mysql;
三、定义主数据库和从数据库
(一台电脑上安装两个mysql)(这个随意,我用两台电脑, ip分别为:localhost(从)和localhost(主))
四、主数据库的配置:
(从dos进入mysql)
① 在主数据库里创建需要主从的数据库
mysql> create database db1;
② 找到my.ini(在mysql安装目录下:D:\mysql01);
③ 打开my.ini找到 server-id=1(没有就添加),然后在下面添加
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
# 设置mysql数据库的数据的存放目录
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#=========主从复制关键配置=====================
server_id=1 #主库和从库需要不一致,配一个唯一的ID编号,1至32。 手动设定
log-bin=mysql-bin #二进制文件存放路径,存放在根目录data
#binlog-do-db=test #需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与 复制
#binlog-ignore-db=mysql #不需要复制的库,和上项同理
#=========主从复制关键配置=====================
④ 重启mysql(方法A:在服务里重启,方法B:C:\Users\Administrator> net start mysql80 )
⑤ 创建用于主从的用户
mysql> create user myslave@localhost identified by ‘123456‘; (用于在从数据库登录的账号)
#myslave是用户名,‘123456‘密码是用户对应的密码,localhost也可以写ip
mysql> grant REPLICATION SLAVE on *.* to myslave@‘localhost ‘;
⑥ 查询用于同步的二进制文件和位置
mysql> show master status \G
**********************1.row*******************
File: mysql-bin.000003
Position: 3465
Binlog_Do_DB: db1
⑦ 记住上面的File和Position参数;
五、从数据库的配置:
(从dos进入mysql)
① 在从数据库里创建数据库
mysql> create database db1;
② 找到my.ini(在mysql安装目录下:D:\mysql01);
③ 打开my.ini,找到 server-id改为2,也就是(server-id=2)然后在下面添加
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3307
# 设置mysql的安装目录
# 设置mysql数据库的数据的存放目录
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#========主从复制关键配置======================
server_id=2 #主库和从库需要不一致
#binlog-do-db=test #和主库说明一致
#binlog-ignore-db=mysql #和主库说明一致
#========主从复制关键配置======================
④ 重启mysql(方法A:在服务里重启,方法B:C:\Users\Administrator> net start mysql80 )
⑤ 在从数据库设置参数,一定要保证数据和主数据库的一致性,尤其master_log_file和master_log_pos
mysql>change master to master_host=‘localhost‘,
master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000003‘,master_log_pos=3465;
⑥ 查看是否设置成功
mysql> start slave; ##开启
mysql> show slave status \G
********************1.row********************
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
⑦ 出现Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 说明配置成功
六、测试结果
A:登录数据库并在主数据库db1创建表和添加数据
mysql> use db1;
create table user(id int);
insert into user values(1);
select * from user \G
*********************1.row*******************
id: 1
B:打开从数据库并在从数据库查询主数据库添加的数据
mysql> use db1;
show tables;
select * from user \G
*********************1.row*******************
id: 1