1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MySQL8从零数据开始主从复制

MySQL8从零数据开始主从复制

时间:2021-12-14 10:38:00

相关推荐

MySQL8从零数据开始主从复制

为什么要复制数据库?简单来说有以下几个用处:1. 读写分离通过MySQL复制可以实现读写分离,将读操作分布到多个不同的服务器上,减轻服务器的压力。2. 备份从库可以作为数据的异地实时备份。3. 故障切换当主库遇到故障,系统可以切换到从库,实现故障切换。4. 升级测试从库可作为测试服务器的数据库。主从复制图示如下:复制数据的步骤

在主库上把数据更改记录到二进制日志(Binary Log)中。

备库将主库上的日志复制到自己的中继日志(Relay Log)中。

备库读取中继日志中的事件,将其在备库上重新执行一遍。

具体操作步骤主服务器地址:10.145.1.17从服务器地址:10.145.1.22分别登录主从服务器上的MySQL

在主从服务器上分别新建数据库sync

这样主从服务器上都新建了一个新的数据库sync。创建复制账号repl,并赋予replication slave权限create user "repl"@"10.145.1.%" identified by "Repl123!@#";grant replication slave on *.* to "repl"@"10.145.1.%";

修改主备数据库的配置文件主服务器配置用命令 whereis f 找到f文件的位置,然后用vim打开

在文件中添加:log_bin = mysql-binserver_id = 17这里的log_bin为日志文件名,自己取一个名词, server_id 只要唯一就行。

systemctl restart mysqld 重启mysql

重新登录mySQL输入命令show master status;可以看到file那一列变成了mysql-bin.000001,配置成功。

从服务器配置退出mysql,找到并编辑f文件

添加以下内容:log_bin = mysql-binserver_id = 22relay_log = /var/lib/mysql/mysql-realay-binlog_slave_updates = 1read_only = 1log_bin默认情况下会使用机器名命名,这里设成和主库相同的名称,当然也可以设置成其他名称。relay_log指定中继日志的位置和名字,log_slave_updates允许备库将其重放事件记录到自身的二进制文件中,read_only会阻止没有权限的线程修改数据。这里其实只有server_id是必填项,其他都是选填的。

保存好配置文件后,重启mysql

重新进入MySQL,使用change master to命令开始复制:change master to master_host="10.145.1.17",master_user = "repl",master_password = "Repl123!@#",master_log_file = "mysql-bin-000001",master_log_pos = 0;

输入命令show slave status\G;查看状态

图中显示:Slave_IO_Running: NoSlave_SQL_Running: No表示当前备库还没有开始复制。输入命令:start slave;开始复制。

图中显示:Slave_IO_Running: ConnectingSlave_SQL_Running: YesConnecting说明还未连接成功。哪里出问题了呢?用show grants for "repl"@"10.145.1.%";命令查看,权限已经授予成功了。

查一下mysql日志vim /var/log/mysqld.log

最下面显示Could not find first log file name in binary log index file

在网上搜了一下,在主服务器上运行flush logs;后查看最新的bin-log变成了mysql-bin.000002。

在从服务器上执行

发现还是不行。到底哪里出了问题呢???我查了好久,心力憔悴啊,终止发现了问题!

我把mysql-bin.000002写成了mysql-bin-000002!我去,心好累啊。。。重新设置,这次终于成功了!

哎,不容易啊。在主数据库上运行show processlist\G;显示了来自10.145.1.22的连接,并等待更多的更新。

在从数据库上show processlist\G;显示等待主服务器的数据。

好了,现在我们来验证一下:刚开始都没数据,在主数据库上建表,并插入数据:

从数据库同步了数据:第一次show tables没数据,第二次show tables的时候已经同步了主数据库上的数据,也就有了数据。

自此主从复制设置完成,最后感慨一句,做程序员,细心真的很重要啊。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。