快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

mysql5.7主从同步部署步骤-跳过许多坑

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

本文档使用centos8.0作为主服务器,并使用centos7.7作为从属服务器。

首先讨论环境,

Mysql8.0已安装在主服务器centos8上,docker版本为19.03.5,ip:xxx.xxx.xxx.242;

从服务器安装的是mysql5.7.25,ip:xxx.xxx.xxx.240。

因为需要容器化部署并且版本兼容,所以主服务器提取mysql映像:

docker pull mysql:5.7

准备部署环境。

一些基本的mysql语句被忽略,请自己学习。

1.在创建容器之前,编辑并设置mysqld配置文件my.cnf,设置log_bin和server_id,否则在创建容器后修改配置文件,将导致容器无法启动:

[mysqld]

datadir =/var/lib/mysql

套接字=/var/lib/mysql/mysql.sock

#server_id?服务器的唯一ID,默认为1,通常采用IP的最后一段

server_id = 242

#启用二进制日志记录

log_bin =/var/lib/mysql/binlog

? ##要备份的数据库名称?多个库,以逗号分隔

binlog-do-db = iqms

? #binlog-do-db = file_center,oauth-center,tx-manager,tx_logger,用户中心,xxl-job

? ##如果涉及同步功能或需要配置存储过程,则主服务器和备份服务器将生成异常,无法同步

log_bin_trust_function_creators = TRUE

? bin log_format =混合

#忽略表名称的大小写

lower_case_table_names = 1

应该注意的是,不应尽可能增加其他参数,并且在主从备份期间不支持某些参数。

2.备份主服务器的数据(如果它是新创建的空数据库,则可以忽略)

mysqldump-uroot-p mysql–所有数据库–lock-all-tables \/master_db.sql

3.创建一个新目录,然后创建两个子目录来存储mysql配置文件和数据文件,以便于迁移。

例如:/data/docker_mysql57/conf.d ,/data/docker_mysql57/data

4.创建mysql57容器:

docker run-p 3307:3306–name mysql57-v/data/docker_mysql57/conf.d:/etc/mysql-v/data/docker_mysql57/logs:/var/log/mysql-v/data/docker_mysql57/data:/var/lib/mysql-e MYSQL_ROOT_PASSWORD = 123456-d mysql:5.7

为避免端口冲突,您需要映射容器的端口。

5.通过端口3307登录到主服务器的mysql,创建一个用于同步服务器数据的帐户,并授权:

(创建用户从站,密码从站)

授予复制从属*。 *以”奴隶”标识为”奴隶” @”%”;

GRANT文件打开*。 *以”奴隶”标识为”奴隶” @”%”;

冲洗?特权;

6.仔细检查binlog是否有日志,记住!如果不是,请查看mysql日志以检查出什么问题。我在这里很长时间了:-(

7.获取主服务器的二进制日志信息

显示主状态;

记录二进制文件的名称和位置信息,这些信息将在下面用于同步。

已配置主服务器。如果将来有更改,则必须重新启动从属服务器。

1.?同步从主服务器导出到从服务器的master_db.sql备份文件,以确保主数据和从数据一致。

mysql-uroot-pmysql \ lt; master_db.sql

2.?修改从属服务器的配置文件my.cnf并添加相应的server_id

[mysqld]

datadir =/var/lib/mysql

套接字=/var/lib/mysql/mysql.sock

#server_id?唯一的服务器ID,默认为1,通常采用IP的最后一段

server_id = 240

#忽略表名的大小写

lower_case_table_names = 1

plicate_do_db = iqms

复制_ignore_db = mysql,sys

#复制_do_table =同步指定的表

#复制_ignore_table =忽略指定的表

只读

符号链接= 0

日志错误=/var/日志/mysqld.log

pid-file =/var/run/mysqld/mysqld.pid

max_connections = 3600?

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION?

validate_password_policy = 0

validate_password_length = 8

validate_password_mixed_case_count = 0

validate_password_number_count = 0

validate_password_special_char_count = 0

3.重新启动mysqld服务。

4.使用命令行或客户端连接到从属服务器并设置同步设置:

将master更改为master_host =” xxx.xxx.xxx.242″,master_port = 3307,master_user =” slave”,master_password =” slave”,master_log_file =” binlog.000003″,master_log_pos = 3133;

5.?开始同步

输入命令:启动从属;

6.?检查同步状态

输入命令:show slave status;

请注意,图片中的最后两个参数必须为”是”,否则它们将无法同步。如果slave_sql_running为否,请仔细检查mysql日志,解决错误,然后执行以下操作:

停止从属;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

启动从属;

这时,执行show processlist;您将看到两个同步线程正在工作:

转到主服务器并执行show processlist;您将看到一个同步线程正在工作:

如果从属服务器没有启动,则在主服务器上看不到该线程。

7.如果主服务器已锁定表,请记住要进行解锁:

8.测试,在主服务器上创建一个新表或添加一条记录,您可以在从属服务器上看到它,然后就完成了!

1.环境必须清洁!主服务器上不能有冗余配置!以前的从属服务器上有许多旧库,必须将其删除!

2.每一步后请仔细检查其正确性,否则。 。 。 。 。 。重新开始

这些故障排除声明是必要的:

显示主人身份;

显示奴隶状态

?显示类似” server_id”的变量;

显示类似”%log_bin%”的变量

?显示流程清单;

在” mysql-bin.000003″中显示binlog事件;

3.大胆的假设和仔细的验证

我借用了以下文章,但没有详细信息:-)

https://blog.csdn.net/weixin_42369926/article/details/81036200

还有更多找不到的东西,关闭浏览器后我走了,但这确实很有帮助。

通过此步骤后,其他主机很容易同步,并且一个主机具有更多从机,因此省略。

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638