环境
Mysql 5.7、windows主[192.167.19]、windows从[192.168.1.18]
linux同理
一、主库配置
1、打开主库my.ini,编辑配置如下内容:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\mysql5
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql5\data
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
default-time_zone = '+8:00'
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致 ,一般设置为ip最后一段
server-id = 19
#设置需要同步的数据库
binlog-do-db=test_db
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
C:\soft\mysql5\bin> mysql -u root -p
- 1
3、授权主从复制专用账号
mysql> GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
- 1
4、刷新权限
msyql> flush privileges;
- 1
5、查看主库信息,记录下文件名和点位
msyql> show master status;
- 1
注意:记录一下file和Position
二、从库配置
1、打开从库my.ini,编辑配置如下内容:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\mysql5
# 设置mysql数据库的数据的存放目录(该目录不一定在mysql安装目录下)
datadir=D:\mysql5\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为UTF8`在这里插入代码片`
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
default-time_zone = '+8:00'
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一样 ,一般设置为ip最后一段
server-id = 18
#设置需要同步的数据库
replicate_wild_do_table=test_db.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
2、从库bin目录,登录:
C:\soft\mysql5\bin> mysql -u root -p
- 1
3、根据主库信息,更改语句[file信息、Position信息]、执行。
mysql> CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_PORT=3306,MASTER_USER='db_sync', MASTER_PASSWORD='db_sync',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;
- 1
4、启动服务
# 开启
mysql> start slave
# 停止
mysql> stop slave
# 重启
mysql> reset slave
- 1
- 2
- 3
- 4
- 5
- 6
5、确认状态
确认Slave_IO_Runing以及Slave_SQL_Runing两个状态位是否为“Yes”,如果不为 Yes,
请检查error_log,然后排查相关异常。
mysql>show slave status\G
- 1
提示: flush table with read lock; unlock tables;