报错
2023-09-22T05:49:12.046285Z 0 [Note] mysqld: Shutdown complete
2023-09-22 05:50:21+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.43-1.el7 started.
2023-09-22 05:50:21+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld –verbose –help –log-bin-index=/tmp/tmp.MBBvnYM7zB
2023-09-22T05:50:21.709261Z 0 [ERROR] mysqld: option ‘–binlog-do-db’ requires an argument
2023-09-22T05:50:21.711322Z 0 [ERROR] Aborting
2023-09-22 05:50:32+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.43-1.el7 started.
2023-09-22 05:50:32+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld –verbose –help –log-bin-index=/tmp/tmp.zVLiTI4q2X
2023-09-22T05:50:32.678798Z 0 [ERROR] mysqld: option ‘–binlog-do-db’ requires an argument
2023-09-22T05:50:32.680835Z 0 [ERROR] Aborting
2023-09-22 05:51:19+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.43-1.el7 started.
2023-09-22 05:51:19+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld –verbose –help –log-bin-index=/tmp/tmp.hMqs0ePH2T
2023-09-22T05:51:19.377927Z 0 [ERROR] mysqld: option ‘–binlog-do-db’ requires an argument
2023-09-22T05:51:19.380048Z 0 [ERROR] Aborting
[root@VM-0-16-centos ~]# docker exec -it mysql-master /bin/bash
Error response from daemon: Container 45c7388bedfd2821d5e12d4fa422ce61f3a1443e9a2a4b58f22500fb8b76a364 is not running
这个是因为修改了MySQL配置文件导致的报错
这边
1、从容器中将配置文件复制到本地
docker cp 容器id:/etc/mysql/my.cnf /opt
2、在本地修改配置文件,并保存
使用命令:vi /opt/my.cnf
3、将更改后的配置文件复制到docker容器中
docker cp /opt/my.cnf 容器id:/etc/mysql
4、重启容器
docker restart 容器id
5、查看docker容器中启动的进程
docker ps -a
[root@VM-0-16-centos ~]# docker cp 45c7388bedfd:/etc/mysql/my.cnf /opt
Error response from daemon: lstat /var/lib/docker/overlay2/7fbfaa6439bc5d533a4634173be48e69e1c46b27382b1dcb966bc75823e439f5/merged/etc/mysql/my.cnf: no such file or directory
这边是因为/mysql/my.cnf 在同一个目录
45c7388bedfd mysql:5.7 “docker-entrypoint…” 2 days ago Exited (1) 2 minutes ago mysql-master
[root@VM-0-16-centos ~]# docker cp 45c7388bedfd:/etc/mysql/my.cnf /opt
Error response from daemon: lstat /var/lib/docker/overlay2/7fbfaa6439bc5d533a4634173be48e69e1c46b27382b1dcb966bc75823e439f5/merged/etc/mysql/my.cnf: no such file or directory
[root@VM-0-16-centos ~]# docker cp 45c7388bedfd:/etc/my.cnf /opt
[root@VM-0-16-centos ~]# vim /opt/my.cnf
[root@VM-0-16-centos ~]# docker cp /opt/my.cnf 45c7388bedfd:/etc/
[root@VM-0-16-centos ~]# docker restart 45c7388bedfd
45c7388bedfd
[root@VM-0-16-centos ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45c7388bedfd mysql:5.7 “docker-entrypoint…” 2 days ago Up 8 seconds 33060/tcp, 0.0.0.0:10050->3306/tcp mysql-master
[root@VM-0-16-centos ~]# docker exec -it mysql-master /bin/bash
bash-4.2#
这边就是写入数据库名称为MySQL就好了,不能写入同步所有库
后面我们,开始做
创建数据库同步账户
使用docker命令重新进入到Master容器内部:
docker exec -it mysql-master /bin/bash
1
在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。登录到mysql客户端:
mysql -uroot -p123456
1
创建用户并授权:
mysql> CREATE USER ‘slave’@’%’ IDENTIFIED BY ‘123456’;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘slave’@’%’;
Query OK, 0 rows affected (0.00 sec)
这两个MySQL语句用于创建一个名为 ”slave’@’%” 的用户,并为该用户授予复制权限和客户端复制权限。下面是对这两个语句的详细解释: 1. “创建用户’slave’@’%’,由’123456’标识; – ‘CREATE USER’: 这是一个MySQL的DDL(数据定义语言)语句,用于创建一个新用户。 – ”slave’@’%”: 这是用户的标识符,包括用户名 ”slave” 和允许访问MySQL服务器的主机 ”%”。”%” 表示任何主机,因此该用户可以从任何位置连接到MySQL服务器。 – ‘IDENTIFICATION BY ‘123456”: 这部分指定了用户的密码,这里的密码是 ”123456”’。用户将需要提供正确的密码才能进行连接。 总之,这个语句创建了一个名为 ”slave” 的 MySQL用户,该用户可以从任何主机连接到 MySQL服务器,使用密码 ”123456” 进行身份验证。 2. “将复制从属、复制客户端 *.* 授予为”从属“@”%“;” – ‘GRANT’: 这是一个MySQL权限授权语句,用于授予特定权限给一个或多个用户。 – ‘REPLICATION SLAVE’ 和 ‘REPLICATION CLIENT’: 这是要授予给用户的权限。’REPLICATION SLAVE’ 权限允许用户作为一个复制从属(replication slave)连接到主MySQL服务器,接收主服务器上的二进制日志并执行复制操作。’REPLICATION CLIENT’ 权限允许用户执行一些客户端复制操作,如查看复制状态和配置。 – ‘*.*’: 这部分指定了授予权限的数据库和表。’*.*’ 表示所有数据库和表,因此用户将拥有对所有数据库和表的复制权限和客户端复制权限。 – ‘TO ‘slave’@’%”: 这部分指定了要授予权限的用户和允许连接的主机。”slave’@’%” 表示我们要给之前创建的 ”slave” 用户授予权限,并允许该用户从任何主机连接。 总之,这个语句授予了 ”slave’@’%” 用户复制权限和客户端复制权限,使其能够作为一个复制从属连接到MySQL主服务器并执行复制操作。这通常用于设置MySQL复制,其中一个MySQL服务器充当主服务器,另一个MySQL服务器充当从属服务器,用于数据复制和备份。