乐趣区

关于mysql:MySQL-复制主副表的问题详解

1 主机配置

主机的 配置 就三个步骤,比拟容易:

1.1 受权给从机服务器

GRANT REPLICATION SLAVE ON *.* to 'rep1'@'10.3.50.27' identified by '123';
FLUSH PRIVILEGES;

这里示意配置从机登录用户名为 rep1明码 为 123,并且必须从 10.3.50.27 这个地址登录,登录胜利之后能够操作任意库中的任意表。其中,如果不须要限度登录地址,能够将 IP 地址更换为一个 %。

留神,在 MySQL8 里边,这块有一些变动。MySQL8 中用户创立和受权须要离开,不能像下面那样一步到位,具体形式如下:

CREATE USER `rep1`@`10.3.50.27` IDENTIFIED WITH caching_sha2_password BY 'javaboy.COM';
GRANT Replication Slave ON *.* TO `rep1`@`10.3.50.27`;

2. 批改主库配置文件

开启 binlog,并设置 server-id,每次批改配置文件后都要重启 MySQL 服务才会失效

开启 binlog 次要是批改 MySQL 的配置文件 mysqld.cnf,该文件在容器的 /etc/mysql/mysql.conf.d

log-bin:同步的日志门路及文件名,肯定留神这个目录要是 MySQL 有权限写入的(我这里是偷懒了,间接放在了上面那 个 datadir上面)。
binlog-do-db:要同步的数据库名,当从机连上主机后,只有这里配置的数据库才会被同步,其余的不会被同步。
server-id: MySQL 在主从环境下的惟一标志符,给个任意数字,留神不能和从机反复。
批改 binlog_format 的值为 STATEMENT,这一点很要害。
配置实现后 重启 MySQL 服务端:

docker restart mysql33061

再看一眼 binlog_format 设置胜利没:

退出移动版