docker 安装mysql并进行主从配置
1:拉取镜像 docker pull mysql:版本号
2:创建仓库和配置文件 mkdir mysql-data vim my.cof
3:配置文件 master
[mysqld]
server-id=1
log-bin=master-bin
skip-host-cache
skip-name-resolve
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
user=mysql
default-time_zone = '+8:00'
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
4:配置文件slave
[mysqld]
server-id=2
log-bin=master-bin
skip-host-cache
skip-name-resolve
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
user=mysql
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
5:分别启动两个mysql实例
启动master实例:docker run -d --name mysql_master -p 3306:3306 -v 服务器配置路径:/etc/mysql/my.cnf -v 服务器data文件夹位置:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root的密码 mysql:5.7.6
启动slave实例:docker run -d --name mysql_slave -p 3306:3306 -v 服务器配置路径:/etc/mysql/my.cnf -v 服务器data文件夹位置:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root的密码 mysql:5.7.6
6:进去主库
6.1 登录 mysql -u root -p
6.2 添加slave访问主库的账号 create user 'salve'@'%' identified by '账号密码';
6.3 给slave 权限 grant all privileges on *.* to 'slave'@'%' identified by '账号面' ;(这里可以根据实际情况给权限)
6.4 查看master的File值和Postion值:show master status ;
7: 进入从库
7.1 登录 mysql -u root -p
7.2 进行主从配置的master配置
change master to master_host='主服务器IP',master_port=主服务器MYSQL端口,master_user='用户名',master_password='密码',master_log_file='master的File值',master_log_pos=master的Postion值;
7.3:启动slave: start slave;
7.4 查看 slave状态: show slave status \G; Slave_IO_Running和 Slave_SQL_Running 都为yes的时候配置成功
8:可能出现的问题
1: Slave_IO_Running 一直是connecting状态
解决方案:查看配置主数据库的时候,ip地址和账户密码是否填写正确
9:mysql 主从失败的时候可以选择跳过,
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 ;