docker安装mysql主从同步

docke-compose.yml

version: '3'
services:
  master_mysql:
    container_name: master_mysql
    image: mysql:5.7
    ports:
      - '3306:3306'
    volumes:
      - './mysql_data/master:/var/lib/mysql'
      - './mysql_conf/master/my.cnf:/etc/mysql/conf.d/master.cnf'
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
  slave_mysql:
    container_name: slave_mysql
    image: mysql:5.7
    ports:
      - '3307:3306'
    volumes:
      - './mysql_data/slave:/var/lib/mysql'
      - './mysql_conf/slave/my.cnf:/etc/mysql/conf.d/slave.cnf'
    environment:
      MYSQL_ROOT_PASSWORD: '123456'

./mysql_conf/master/my.cnf

[mysqld]
user=mysql
log-bin=mysql-master01-bin
server-id=1
[client]
port = 3306 # 设置mysql客户端连接服务端时默认使用的端口
[mysql]
default-character-set=utf8 # 设置mysql客户端默认字符
bind-address = 0.0.0.0

./mysql_conf/slave/my.cnf

[mysqld]
user=mysql
log-bin=mysql-slave01-bin
server-id=2
[client]
port = 3306 # 设置mysql客户端连接服务端时默认使用的端口
[mysql]
default-character-set=utf8 # 设置mysql客户端默认字符
bind-address = 0.0.0.0

运行:docker-compose up -d

一. 进入master运行:show master status;

记住file的值.
创建用户:create user zwq;
赋予权限:GRANT ALL PRIVILEGES ON *.* TO zwq@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
参数说明:
1.FLUSH PRIVILEGES;这个命令必须填写,否则上面设置的用户权限失效。
2.ip地址是可以设置范围的。例如:GRANT REPLICATION SLAVE ON *.* TO'linzhiqiang'@'192.168.0.%' IDENTIFIED BY'220316';
3.操作的数据库也是可以指定的。
4.用户的权限也是可以设置的。具体的命令大家可以自己去学习,我这里就不多说了。
如果不设置用户权限的话,本地可以连接的上mysql服务器,局域网或者外网是连接不上,会显示连接被拒绝或者用户没有这个权限。除此之外权限还可以精确到某个数据库,连接者的IP地址区间,设置是某个数据的操作问题等等都可以进行设置。我这边设置的是zwq这个用户具备所有用户数据库的权限,所有的ip地址都可以通过Master这个用户来连接主数据库。

二. 进入slave

change master to
master_host='192.168.88.22', //Master 宿主机Ip地址
master_port=3306,//Master 端口号
master_user='zwq',//Master 用户名
master_password='123456',//用户密码
master_log_file='mysql-master01-bin.000003',//Master服务器产生的日志要和Master服务器所配置的相互对应如下如所示的file对应(上面记住的file值)
master_log_pos=0;//要和Master服务器所配置的相互对应如下如所示的Position对应(经过测试发现如果是一样的只能同步一次,所以这里修正成0,0是可以每次都同步成功的)

然后运行:start slave
查看状态是否正确:show slave status\G

最后进行测试.

你可能感兴趣的:(docker安装mysql主从同步)