docker 安装mysql 并挂载数据 配置文件,并且设置主从复制

描述

本文档记录了mysql安装过程,主从配置过程,主备实现方式。

安装mysql

  • 创建mysql工作目录,用于挂载数据 配置文件等
    #mkdir /root/mysql/data
    #mkdir /root/mysql/conf.d
    #mkdir /root/mysql/conf
  • 启动一个未挂载的mysql容器
    docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
  • 进入容器复制需要挂载的目录

# docker cp 4e71be6b176c:/var/lib/mysql /root/mysql/data
# docker cp 4e71be6b176c:/etc/mysql/my.cnf /root/mysql/conf/my.cnf
# docker cp 4e71be6b176c:/etc/mysql/conf.d /root/mysql/conf.d

#================配置文件复制,数据挂载========================

# 开启一个未挂载的容器  docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
# 将容器内的数据以及配置文件拷贝出来 
# docker exec -it mysql /bin/bash
# docker cp 4e71be6b176c:/var/lib/mysql /root/mysql/data
# docker cp 4e71be6b176c:/etc/mysql/my.cnf /root/mysql/conf/my.cnf
# docker cp 4e71be6b176c:/etc/mysql/conf.d /root/mysql/conf.d

  • 启动mysql 其脚本如下
#================配置文件复制,数据挂载========================

# 开启一个未挂载的容器  docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
# 将容器内的数据以及配置文件拷贝出来 
# docker exec -it mysql /bin/bash

# docker cp 4e71be6b176c:/var/lib/mysql /root/mysql/data
# docker cp 4e71be6b176c:/etc/mysql/my.cnf /root/mysql/conf/my.cnf
# docker cp 4e71be6b176c:/etc/mysql/conf.d /root/mysql/conf.d

docker stop mysql \
docker rm mysql \
docker run  -d \
        --restart=always \
        --privileged=true \
        -v /root/mysql/data/:/var/lib/mysql \
        -v /root/mysql/conf.d:/etc/mysql/conf.d \
        -v /root/mysql/conf/my.cnf:/etc/mysql/my.cnf \
        -v /root/mysql/log:/var/log/mysql \
        -p 3306:3306 \
        --name mysql \
        -e MYSQL_ROOT_PASSWORD=123456 \
        mysql

配置远程连接

mysql>alter user 'root'@'%' identified by '123456' password expire never;
mysql>alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql>flush privileges;

主从配置

  • 进入容器master机器上创建主从连接账户

mysql>CREATE USER 'slaves'@ '%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';
mysql>flush privileges;

查看账户权限
mysql>show grants for root;
mysql>show grants for slaves;
在这里插入图片描述

  • master配置my.cnf文件
[mysqld]

pid-file        = /var/run/mysqld/mysqld.pid

socket          = /var/run/mysqld/mysqld.sock

datadir         = /var/lib/mysql

secure-file-priv= NULL

server-id=201 #设置主服务器的ID,可以任意配置但是多个主从之间不能重复

innodb_flush_log_at_trx_commit=2  # 写入磁盘策略

sync_binlog=1  #开启binlog日志同步功能

expire_logs_days=180 #二进制日志保留天数

log-bin=mysql-bin-1 #binlog日志文件名(可以任意命名)

#binlog-do-db=test  # 这个表示只同步某个库 (如果没有此项,表示同步所有的库)
#binlog-ignore-db=xxxx # 二进制日志中忽略数据库

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/

  • slave从机器配置my.cnf
[mysqld]

pid-file        = /var/run/mysqld/mysqld.pid

socket          = /var/run/mysqld/mysqld.sock

datadir         = /var/lib/mysql

secure-file-priv= NULL

read-only=1 #是否只读,0 代表非只读 1:代表只读

server-id=202 #设置主服务器的ID,可以任意配置但是多个主从之间不能重复

innodb_flush_log_at_trx_commit=2  #

sync_binlog=1  #开启binlog日志同步功能

expire_logs_days=180, # 二进制日志保留天数

log-bin=mysql-bin-1 #binlog日志文件名(可以任意命名)

# binlog-do-db=test  # 这个表示只同步某个库 (如果没有此项,表示同步所有的库)

#binlog-ignore-db=xxxx # 还有一个参数是指定不同步哪些库,这里不再赘述
# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/
  • 重启master slave 数据库

进入master 数据库容器,查看主数据库状态,可以获得数据库的binlog日志文件名称和位置,用于配置从数据库开始同步的文件和位置

mysql>show master status
在这里插入图片描述
进入slave数据库容器

change master to master_host='192.168.43.201',master_user='slaves ',master_password='123456!',get_master_public_key=1,master_log_file='mysql-bin-1.000002 ',master_log_pos= 650,master_port=3306;

参数说明

master_host:主数据库IP地址
master_user:主数据库连接用户名
master_password:主数据量连接密码
master_port:主数据端口
master_log_file:开始同步的主数据库日志名称,主数据库执行show master status 可获得当前binlog文件名称和位置
master_log_pos:开始同步的主数据库日志开始位置,主数据库执行show master status 可获得当前binlog文件名称和位置
get_master_public_key=1,mysql8默认使用插件caching_sha2_password连接需要拿到server的public key来加密password

  • slave查看状态

开启或关闭主从同步
mysql>start slave;

查看主从同步

mysql>show slave status\G;
在这里插入图片描述
只有slave都为yes时配置才成功

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

测试主从同步

navicat 连接master数据库

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值