文章目录
前言
MySQL 内置的复制功能是一种常用的多库同步方式,基于主从结构,将主数据库的数据更改复制到从数据库 。以下是具体步骤:
MySQL8.0 超详细安装配置教程(附安装包):https://blog.csdn.net/u014164303/article/details/145493332
MySQL 8.0安装包下载地址:https://pan.quark.cn/s/2d463bf355af
设置主数据库
- 修改配置文件:打开主数据库的 MySQL 配置文件(一般是 my.cnf 或 my.ini ),添加或修改以下配置项:
- server-id=1 :server-id是主数据库的唯一标识,可设为任意整数 。
- log-bin=mysql-bin :启用二进制日志记录,用于记录数据变更,供从数据库复制使用。
- binlog-format=row :采用基于行的复制格式,能更精确记录数据变更 。
重启主数据库 :修改配置后,重启 MySQL 服务,使配置生效。
创建复制用户并授权:在主数据库执行以下 SQL 命令,创建用于复制的用户并授予权限:
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON . TO 'replication_user'@'%';
FLUSH PRIVILEGES;
这里replication_user是用户名,password是密码,%表示该用户可从任意主机连接 。
获取主数据库位置信息:执行SHOW MASTER STATUS; ,记录结果中的File和Position值,后续配置从数据库时会用到 。
设置从数据库
- 修改配置文件:打开从数据库的 MySQL 配置文件,设置:
- server-id=2 :server-id是从数据库的唯一标识,不能与主数据库的server-id相同 。
- 重启从数据库:修改后重启 MySQL 服务。
- 配置复制连接:在从数据库执行以下 SQL 命令配置连接主数据库:
CHANGE MASTER TO
MASTER_HOST='主数据库IP地址',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='主数据库中的File值',
MASTER_LOG_POS=主数据库中的Position值;
其中主数据库IP地址是主库 IP ,replication_user和password是在主库创建的复制用户信息,主数据库中的File值和主数据库中的Position值来自前面SHOW MASTER STATUS;命令结果 。
- 启动从数据库复制进程:执行START SLAVE;启动复制。
- 检查复制状态:执行SHOW SLAVE STATUS; ,确保Slave_IO_Running和Slave_SQL_Running的值都是Running ,表示复制进程正常运行 。
- 验证数据同步:在主数据库执行数据操作,比如插入数据INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2'); ,然后在从数据库执行SELECT * FROM your_table; ,若能看到主库插入的数据,说明同步成功 。
使用第三方工具实现多库同步
- dbforge studio for mysql:能有效解决 MySQL 服务器数据库管理员在数据和架构同步方面的难题。它提供数据比较工具,可方便地进行数据同步与比较。对比数据后,结果会显示在对比网格中,也可生成报告。还支持通过任务调度器自动同步数据库 。
- mysql workbench:免费工具,可用于同步两个数据库。能自动比较并创建变更脚本 。还可创建 EER 图来比较本地和远程数据库架构,能自动显示差异,并且可选择同步方向(从源到目标或从目标到源 )。
- Canal :阿里开源项目,可实现 MySQL 数据同步到其他 MySQL,也能同步到 Kafka、ES 等。原理是伪装成 MySQL 从库获取数据,再转发到目标端 。
- DataX :阿里巴巴开源的异构数据库、海量数据同步框架,支持离线和实时同步 。使用时先下载压缩包上传到服务器并解压,运行测试脚本验证安装。如需从 MySQL 同步到 MySQL ,执行命令生成脚本模板,配置后执行即可。