Mysql主从配置

背景:单点故障的情况下,想要数据库达到高可用,可以配置个主从mysql。在主节点挂掉的情况可以用keepalive+lvs技术,ip漂移到从节点,无感的使用从节点数据

需求:用docker快速的搭建一个mysql主从,实现主从的数据同步。keepalive+lvs后边编写

效果:主节点对数据库,表,字段,数据的操作都会同步到从节点

  • 部署节点

#创建目录
mkdir -p /home/data/master/mysql/
mkdir -p /home/data/slave/mysql/

#创建配置文件
touch /home/data/master/mysql/my.cnf
touch /home/data/slave/mysql/my.cnf

#部署主节点
docker run \
    -p 3307:3306 \
    -e MYSQL_ROOT_PASSWORD=abc123 \
    -v /home/data/master/mysql/conf:/etc/mysql/conf.d \
    -v /home/data/master/mysql/data:/var/lib/mysql:rw \
    -v /home/data/master/mysql/my.cnf:/etc/mysql/my.cnf \
    --name xc_mysql_master \
    --restart=always \
    -d mysql:8.0

#部署从节点
docker run \
    -p 3308:3306 \
    -e MYSQL_ROOT_PASSWORD=abc123 \
    -v /home/data/slave/mysql/conf:/etc/mysql/conf.d \
    -v /home/data/slave/mysql/data:/var/lib/mysql:rw \
    -v /home/data/slave/mysql/my.cnf:/etc/mysql/my.cnf \
    --name xc_mysql_slave \
    --restart=always \
    -d mysql:8.0
  • 主节点配置 vim /home/data/master/mysql/my.cnf

[mysqld]

# 开启 binlog, 可以不加,默认开启

log-bin=mysql-bin

# 选择 ROW 模式

binlog_format=row

#server_id不要和slaveId重复

server-id=1
  • 从节点配置 vim /home/data/slave/mysql/my.cnf

[mysqld]

# 开启 binlog, 可以不加,默认开启

log-bin=mysql-bin

# 选择 ROW 模式

binlog_format=row

#server_id不要和slaveId重复

server-id=2
  • 重启服务

docker restart xc_mysql_master

docker restart xc_mysql_slave

  • 数据库授权

    • 从节点需要配置账号密码,进行授权

-- 创建slave用户
CREATE USER 'xc_slave'@'%';
-- 设置密码
ALTER USER 'xc_slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456789';
-- 授予复制权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'xc_slave'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
  • 确认binlog日志的文件名和位置,则可以运行命令SHOW MASTER STATUS;

  • 从数据库配置读取主节点数

change master to master_host='120.24.7.58', master_user='xc_slave', master_password='123456789', master_port=3307, master_log_file='mysql-bin.000001', master_log_pos=1095, master_connect_retry=30;
  • 设置从数据库开启主从服务 start slave;