搭建 mysql 主从服务器

搭建mysql主从服务器

Ubantu/Linux

环境要求:

  • Docker
  • MySQL

搭建步骤

1、docker 拉取 mysql 镜像
# 查看系统 MySQL 版本,也通过进入 mysql 来查看
mysql -V 或 mysql -uroot -p
# 拉取相同版本的 mysql 镜像。不同版本的 mysql 可能无法建立主从联系
sudo docker pull mysql:5.7.34
2、主机配置
  • 以系统 mysql 作为主机,修改主机配置文件

    # 文件位置:/etc/mysql/mysql.conf.d/mysqld.cnf
    # 开启日志
    general_log_file = /var/log/mysql/mysql.log
    general_log = 1
    # 服务id
    server-id = 1
    # 开启从机访问接口:二进制日志
    log_bin = /var/log/mysql/mysql-bin.log
    
  • 重启主机,查看主机状态

    # 重启 mysql 主机。停止和启动分别对应 stop/start
    sudo service mysql restart
    # 进入 mysql
    mysql -uroot -p
    # 查看主机状态。会显示 File 和 Position,请记住,这需要在从机中设置。
    show master status;
    
  • 创建从机用户

    # 创建从机用户。
    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
    # 刷新权限
    REPLICATION SLAVE;
    

    tips:

    ​ REPLICATION SLAVE 权限是全局性的,必须作用于所有数据库: *.*

    ​ 可以在主机配置文件中限制从机能访问的数据库:

    # 允许从机访问:二进制日志要记录数据库
    binlog_do_db = include_database_name
    # 不允许从机访问:二进制日志要忽略的数据库
    binlog_ignore_db = include_database_name
    
3、从机配置
  • 创建从机配置文件

    # 创建从机目录
    mkdir slave_mysql/
    cd slave_mysql/
    mkdir data
    mkdir mysql.conf.d
    
    # 复制主机配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf 
    cp /etc/mysql/mysql.conf.d/mysqld.cnf mysql.conf.d/
    
    # 修改配置文件
    # 修改端口号
    port = 3307
    # 关闭日志
    #general_log_file = /var/log/mysql/mysql.log
    general_log = 0
    # 服务id
    server-id = 2
    # 关闭二进制日志
    # log_bin = /var/log/mysql/mysql-bin.log
    
  • 启动 docker mysql 从机

    # MYSQL_ROOT_PASSWORD 为 root 密码,需牢记。
    sudo docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v ~/slave_mysql/data:/var/lib/mysql -v ~/slave_mysql/mysql.conf.d:/etc/mysql/mysql.conf.d mysql:5.7.34
    

    如果从机无法启动,请删除容器、slave_mysql/data文件下所有文件,重新尝试。

    sudo docker rm -f mysql-slave
    rm -rf ~/slave_mysql/data/*
    
  • 进入从机,连接主机,查看状态。

    # 进入从机
    mysql -uroot -pmysql -h 127.0.0.1 --port=3307
    # 连接主机
    change master to master_host='127.0.0.1', master_user='slave',master_password='slave',master_log_file='mysql-bin.000009',master_log_pos=1562;
    # master_host 主机ip, master_user 主机用户指定为刚创建的从机用户,
    # master_log_file 和 master_log_pos 分别是主机状态中的 File 和 Position
    
    # 开启从机
    start slave
    # 查看从机状态
    show slave status \G;
    # 以下两项状态如下,则连接成功。
    # Slave_IO_Running: Yes
    # Slave_SQL_Running: Yes
    

    如果连接失败,请删除容器、从机目录后,重新尝试。

上一篇:mysql主从复制


下一篇:HCIA ---静态路由实验