Linux运维知识之Linux MySQL主从复制(Replication)(MySQL数据同步)配置
小标 2019-03-05 来源 : 阅读 1392 评论 0

摘要:本文主要向大家介绍了Linux运维知识之Linux MySQL主从复制(Replication)(MySQL数据同步)配置,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

本文主要向大家介绍了Linux运维知识之Linux MySQL主从复制(Replication)(MySQL数据同步)配置,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

Linux运维知识之Linux MySQL主从复制(Replication)(MySQL数据同步)配置

当我们要做负载均衡的时候,我们必须考虑三个问题:

1、智能DNS的使用;

智能DNS我们可以用DNSPod来解决,看这篇文章:怎样用DNSPod做负载均衡。

2、文件的同步;

而文件的同步可以通过rsync软件来解决,看这篇文章:rsync服务器架设。

3、MySQL数据库的同步。

剩下是MySQL数据库的同步了,这节我们就来解决这个问题。

MySQL是开源的关系型数据库系统。复制(Replication)是从一台MySQL数据库服务器(主服务器master)复制数据到另一个服务器(从服务器slave)的一个进程。


配置主服务器(master)


1、编辑数据库配置文件my.cnf,一般在/etc/目录下。


#vi /etc/my.cnf


在[mysqld]的下面加入下面代码:


log-bin=mysql-bin


server-id=1


innodb_flush_log_at_trx_commit=1


sync_binlog=1


binlog-do-db=wordpress


binlog_ignore_db=mysql


server-id=1中的1可以任定义,只要是唯一的就行。

binlog-do-db=wordpress是表示只备份wordpress。

binlog_ignore_db=mysql表示忽略备份mysql。

不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。

2、然后重启MySQL:


#service mysqld restart


3、登录MySQL服务器。


#mysql -uroot -p


在主服务器新建一个用户赋予“REPLICATION SLAVE”的权限。你不需要再赋予其它的权限。在下面的命令,把X.X.X.X替换为从服务器的IP。


mysql>CREATE USER 'user'@'X.X.X.X' IDENTIFIED BY 'password';


mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password';


4、执行以下命令锁定数据库以防止写入数据。


mysql>FLUSH TABLES WITH READ LOCK;


这时不要退出mysql命令行,因为退出命令行后,全局表锁就失效,新开一个窗口继续执行以下命令。

5、导出数据库


#mysqldump -u root -p123456 --all-databases > /root/all.sql


6、再次连接数据库进入mysql命令行查看master状态。


mysql>SHOW MASTER STATUS;


请记下显示的信息,配置从服务器会用到。

+——————+———-+————–+——————+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000003 |  1001741 | dbispconfig  | mysql            |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

7、解锁数据表。


mysql>UNLOCK TABLES;


8、使用scp命令传输数据库文件all.sql到从服务器。


#scp /root/all.sql root@www.example.com:/root


配置从服务器(slave)


登录从服务器。

1、导入主服务器的数据库。


#mysql -u root -p123456 < /root/all.sql


2、编辑配置文件my.cnf,在[mysqld]下面加入:


server-id=2


2可以自己定义,只要保证唯一的就行。

3、保存文件并重启mysqld。


#service mysqld restart


4、登录mysql服务器,执行以下命令。


mysql>CHANGE MASTER TO


MASTER_HOST='X.X.X.X',


MASTER_USER='user',


MASTER_PASSWORD='password',


MASTER_PORT=3306,


MASTER_LOG_FILE='mysql-bin.000001',


MASTER_LOG_POS=98,


MASTER_CONNECT_RETRY=10;


MASTER_HOST:主服务器的IP。

MASTER_USER:配置主服务器时建立的用户名

MASTER_PASSWORD:用户密码

MASTER_PORT:主服务器mysql端口,如果未曾修改,默认即可。

5、启动slave进程。


mysql>START SLAVE;


6、查看mysql的日志,一般在/var/log/目录下,如果启动成功,你应该会看到类似下面的日志。

091104 8:42:02 [Note] Slave I/O thread: connected to master ‘root@X.X.X.X:3306?, replication started in log ‘mysql-bin.000001? at position 98

现在主服务器和从服务器已经配置好了。另外你可能需要设置主服务器的数据库二进制日志的过期时间,可以在配置文件中使用参数expire_logs_days来设定。


检查是否正常运行


1、在主服务器上执行SHOW MASTER STATUS,如果已经记录,Position应为非零。如果没有记录,确认正用log-bin和server-id选项运行主服务器。

2、在从服务器上执行SHOWSHOW SLAVE STATUS,检查是否slave_IO_Running和slave_SQL_Running的值均为Yes。如果不是,验证当启动从服务器时使用的选项。

3、 如果从服务器正在运行,建立了与主服务器的连接吗?使用SHOW PROCESSLIST,找出I/O和SQL线程并检查它们的State列看它们如何显示。如果I/O线程状态为Connecting to master,验证主服务器上复制用户的权限、主服务器主机名、DNS设置,是否主服务器真正在运行,以及是否可以从从属服务器访问。


需要注意的问题


1、主服务器与从服务器的时区必须一致,否则mysql执行与时间相关的函数将会导致数据不一致。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程