MySQL 主从配置方案
1. 安装数据库(同版本,采用压缩包的方式安装)
1.1 创建配置文件my.ini
,并将my.ini
存放在MySQL安装目录下
[mysqld]
# 设置MySQL安装路径
basedir=D:\iscw\mysql
# 设置MySQL数据保存目录
datadir=D:\iscw\mysql\data
1.2 使用mysqld手动初始化数据目录
-
初始化选项说明
--initialize
使用该选项初始化将生成随机密码,建议结合--console
选项使用--initialize-insecure
使用该选项初始化将不会生成任何密码--defaults-file
指定mysql数据目录初始化时读取的配置文件,该选项必须在mysqld
命令之后的第一位
-
初始化数据目录
注意
--initialize
选项初始化生成的随机密码在最后一行mysqld --initialize --console
1.3 启动MySQL服务器
net start mysql
1.4 连接MySQL服务器
-
使用
--initialize
选项初始化数据目录,请使用随机密码登录服务器mysql -u root -p
使用
--initialize-insecure
选项初始化数据目录,请使用--skip-password
选项连接服务器mysql -u root --skip-password
1.5 连接后,修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'
注意
通常情况下使用127.0.0.1连接到服务器会被解析为localhost账户。可以通过以下方式确保连接到MySQL服务器
CREATE USER 'username'@'hostname' IDENTIFIED BY 'new_password'
2. 主从配置(通过修改ini文件实现)
1. master服务器配置
1.1 用户添加及授权
// 在master服务器上授权一个账号,拥有slave权限
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'154.132.32.38' IDENTIFIED BY 'iscw';
说明:154.132.32.38 是从库的IP,iscw 是账号repl的密码,配制时按照响应IP去修改
1.2 修改my.ini配置文件
# 主从的server-id必须不一样,服务器多的话尽量不选择1,2,3
server-id=1
# 主节点日志名称
log-bin=master-bin
binlog-format=ROW
# 以下两个为可选选项,如果要保证数据不丢失最好在清理binlog之前把要清理的日志备份,日志文件的大小根据磁盘的性能做适当的调整
expire_logs_days = 7
# binlog过期清理时间
max_binlog_size = 1G
# binlog每个日志文件大小
max_connections = 1000
character-set-server = utf8mb4
# 配置字符集
collation-server = utf8mb4_unicode_ci
# 配置字符集
# 配置不同步的库
binlog-ignore-db = mysql
binlog-ignore-db = sys
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
1.3 重启master的MySQL服务
net stop mysql
net start mysql
2. 从库配置
2.1 修改my.ini配置文件
[mysqld]
max_connections = 1000
log_bin = slave-bin
server_id = 2
relay_log = slave-relay-bin
log_slave_updates = 1
read_only = 1
#以下两个为可选选项,如果要保证数据不丢失最好在清理binlog之前把要清理的日志备份,日志文件的大小根据磁盘的性能做适当的调整
expire_logs_days = 7
# binlog过期清理时间
max_binlog_size = 100m
# binlog每个日志文件大小
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=sys
2.2 重启MySQL服务
3. 开启复制
1. 查看主库binlog信息
1.1 登录主库执行
show master status;
执行完成后,可以获取当前主库binlog使用的文件及pos点
binlog文件:file(master-bin.00000x)
pos点:position
2. 在从库上设置复制信息
2.1 根据上一步获取到的信息(position,file)配置从库的复制信息,在从库执行如下命令
# 注意:每次重启数据库以后需要重新运行当前命令开启同步
CHANGE MASTER TO MASTER_HOST='154.132.37.238',MASTER_USER='repl',MASTER_PASSWORD='iscw',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=154;
参数解释:
- master_host:主节点IP
- master_user:master授权的用户
- master_password:master授权用户密码
- master_log_file:master binlog日志文件名称
- master_log_pos:master的日志文件位置
2.2 在从库开启复制
从库信息配置完成后执行命令可开启复制
start slave;
2.3 查看复制状态
# 启动后如果不报错即可执行查看复制状态命令
show slave status\G; # \G 格式化显示
# 主要看两个参数状态,如果都是yes ,表示通信整张
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
注意
-
Slave_IO_Running=NO
-
检查两台主机是否能ping通
ping不通可以关闭防火墙
-
-
Slave_SQL_Running=NO
-
重启同步
# 1. 从库关闭同步 stop slave; # 2. 主库刷新log日志文件 flush logs; # 3. 查看主库新的日志文件,一般是最后的数字加1 show master status; # 4. 从库根据新的日志文件在从库重新设置主节点日志信息 CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=154; # 5. 从库开启同步 start slave;
-