此文档举例:一主一从
1. 在两台服务器中安装同一版本mysql数据库
2. 修改MySql数据库配置 (my.cnf)
主库配置----------------(标红位置为主要主从配置项)
[mysqld]
bind-address=0.0.0.0
port=3307
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
server-id=1
log-bin=master-bin
// 如果server-id-0 则会拒绝所有从库链接
server-id=1 // 一般用当前服务器ip的最后ip端标记
// binlog日志
log-bin=master-bin
// binlog的索引文件(此项不配置也可,mysql会自动根据上面配置,在后缀加上.index)
log-bin-index=master-bin.index
# 复制过滤:需要备份的数据库,输出binlog 多个数据库,添加多条即可
binlog-do-db=test
# 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步,多个数据库,添加多条即可)
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
# 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存(可不配)
binlog_cache_size=1M
# 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
# 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
3. 在master服务器创建一个slave节点用户
#'slave'@'192.168.31.156'
#slave 是用户名 后面 slave 是密码
#192.168.31.156 是允许访问的远程IP地址,这里要写从属服务器的IP
#因为演示环境实在本机访问,因此都是192.168.31.156,生产环境要改为其他IP
create user 'slave'@'192.168.31.156' IDENTIFIED by 'slave';
注意:如果是mysql8 需要指定一下加密方式:create user 'slave'@'192.168.31.156' identified with mysql_native_password by 'slave';
#为slave用户授予主从复制的权限
grant replication slave on *.* to 'slave'@'192.168.31.156';
#激活权限
flush PRIVILEGES;
show master status;
以上操作完毕,开始处理slave节点服务器
[mysqld]
bind-address=0.0.0.0
port=3308
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
server-id=2
log-bin=slave-bin(此处可以与master节点名称一致)
执行slave脚本:
CHANGE MASTER TO
MASTER_HOST='192.168.31.156' (主库ip)
,MASTER_PORT=3310 (主库端口)
,MASTER_USER='slave' (上一步创建的从库连接用户名)
,MASTER_PASSWORD='slave'(上一步创建的从库连接密码)
,MASTER_LOG_FILE='mysql-bin.000001' (在主库show master status;命令结果)
,MASTER_LOG_POS=951; (在主库show master status;命令结果)
#开始主从复制
start slave;
查看主从状态
show slave status;(两点为yes则说明主从搭建成功)
如果两台服务器没有互通,请检查网络是否通常。