1. 为了能在一台电脑上(本机)演示出主从架构,复制本机原有mysql一份,例如:复制D:\mysql-
5.7.25(作为主库) 到 D:\mysql-5.7.25-s1(作为从库), 修改主、从库的配置文件(my.ini)
主库配置:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#过滤密码,设置密码后将其注释
#skip-grant-tables
#设置3306端口
port = 3307
# 设置mysql的安装目录
basedir=D:\java\mysql\mysql-5.7.27-winx64-m1
# 设置mysql数据库的数据的存放目录
datadir=D:\java\mysql\mysql-5.7.27-winx64-m1\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
default-time_zone = '+8:00'
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 1
#设置需要同步的数据库
binlog-do-db=store_db
binlog-do-db=product_db_1
binlog-do-db=product_db_2
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
从库配置:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#过滤密码,设置密码后将其注释
#skip-grant-tables
#设置3308端口
port = 3308
# 设置mysql的安装目录
basedir=D:\java\mysql\mysql-5.7.27-winx64-s1
# 设置mysql数据库的数据的存放目录(该目录不一定在mysql安装目录下)
datadir=D:\java\mysql\mysql-5.7.27-winx64-s1\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
default-time_zone = '+8:00'
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一样
server-id = 2
#设置需要同步的数据库
replicate_wild_do_table=store_db.%
replicate_wild_do_table=product_db_1.%
replicate_wild_do_table=product_db_2.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
然后在命令行窗口(以管理员身份运行)中将从库安装为windows服务,注意配置文件位置:
D:\mysql-5.7.25-s1\bin> mysqld install mysqls1 --defaults-file="D:\mysql-5.7.25- s1\my.ini"
由于从库是从主库复制过来的,因此里面的数据完全一致,可使用原来的账号、密码登录, 现在重启主
库和从库。
请注意,从库数据(data)目录下有个文件auto.cnf,也要与主库不一样,建议直接删除掉,重启服务后
将会重新生成。
2. 授权主从复制专用账号
#切换至主库bin目录,登录主库
mysql -h localhost -uroot -p123
#授权主从复制专用账号
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
#刷新权限
FLUSH PRIVILEGES;
#确认位点 记录下文件名以及位点
show master status;
3. 设置从库向主库同步数据、并检查链路
#切换至从库bin目录,登录从库
mysql -h localhost -P3307 -uroot -p123
#修改从库指向到主库,使用上一步记录的文件名以及位点,注意端口号
CHANGE MASTER TO master_host = 'localhost', master_port = 3307, master_user = 'db_sync',
master_password = 'db_sync', master_log_file = 'mysql-bin.000005', master_log_pos = 154;
#执行该命令前,一定要重启主库和从库服务
show slave status\G
#执行该命令后,确认Slave_IO_Runing以及Slave_SQL_Runing两个状态位是否为“Yes”,如果不为 Yes,
请检查error_log,然后排查相关异常。
#注意:如果之前此从库已有主库指向,需要先执行以下命令清空
STOP SLAVE IO_THREAD FOR CHANNEL '';
reset slave all;
#停止slave命令
STOP slave;
#配置失败的情况下,使用上边的命令清空之前的配置,再停止slave,重启主从数据库服务就好了。