文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何理解Mysql Replication

2024-04-02 19:55

关注

如何理解Mysql Replication,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Mysql Replication

类似于从一台服务器拷贝数据库到另一台服务器上,但它是通过定义Master 和Slave的关系去实时地保证两个数据库的完全同步,这个功能在Mysql的3.23版中开始出现。

Master/Slave模式备份

TestEnv:

Master:Mysql-4.1.12 on Redhat9.0 IP:192.168. 0.217

Slave: Mysql-4.1.12 on Redhat9.0 IP:192.168.10.244

1、编译,安装

1. #tar –zxvf Mysql-4.1.12.tar.gz

2. #cd Mysql-4.1.12

3. .#/configure –prefix=/var/eyou/mysql

4. #make

5. #make install

6. #chown –R root /var/eyou/mysql

7. # chown –R mysql /var/eyou/mysql/var

8. #chgrp –R mysql /var/eyou/mysql

9. #scripts/mysql_install_db

10. #cp support-files/my-medium.cnf /etc/my.cnf

2、Master 机器设置权限,赋予Slave机器FILE及Replication Slave权利,并打包要同步的数据库结构。

Master# pwd

/var/eyou/mysql/bin

Master#./mysql –u root –p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 2 to server version: 4.1.12

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> GRANT FILE ON *.* TO rep@192.168.0.244 IDENTIFIED BY ‘eyou’;

mysql> GRANT REPLICATION SLAVE ON *.* TO rep@192.168.0.244 IDENTIFIED BY ‘eyou’;

赋予192.168.10.244也就是Slave 机器有File权限, 这个4.1.12版对replication的权限好像做了调整,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。

然后打包要复制的数据库

Master# cd var

Master# tar czvf reptest.tar.gz reptest

这样,我们得到一个reptest数据库的打包文件reptest.tar.gz

2设置主服务器Master的my.cnf,启动Mysql服务

Master# vi /etc/my.cnf

在[mysqld]添加或修改以下的

[mysqld]

log-bin #打开logbin选项以能写到slave的 I/O线程;

server-id=1 #表示是本机的序号为1,一般来讲就是master的意思.

sql-bin-update-same

binlog-do-db= reptest #表示同步reptest数据库;

然后把Master主服务器的Mysql重启。

Master# /var/eyou/mysql/bin/mysqladmin –u root –p shutdown

Master# /var/eyou/mysql/bin/safe_mysqld --user=mysql &

3、建立Slave数据库

刚才在Master中打包了reptest.tar.gz,它的作用就是要在Slave恢复成一样的数据库。先把Master 的reptest.tar.gz文件传到Slave机器中去。然后

Slave# tar zxvf reptest.tar.gz -C /var/eyou/mysql/var/

4、修改Slave服务器的my.cnf

Slave# vi /etc/my.cnf

在[mysqld]添加或修改以下的

master-host=192.168.10.217

master-user=rep

master-password=eyou

master-port=3306

server-id=2

master-connect-retry=60

replicate-do-db=reptest    [要更新的数据库]

log-slave-updates

5、删除Slave端数据库目录中的master.info

Slave# rm /var/eyou/mysql/var/master.info

6、重启动Slave的slave start。

Slave# /var/eyou/mysql/bin/mysqladmin –u root –p shutdown

Slave# /var/eyou/mysql/bin/safe_mysqld --user=mysql &

7、测试

先检测两个Mysql数据库中的reptest是否正常。

正常情况应该是Master和Slave 中的Mysql 都有相同的reptest 数据库,并且里面的数据都一样。

然后测试replication 功能是否起用。

在Master中的reptest数据库添加一笔数据:

Master# /var/eyou/mysql/bin/mysql –u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 12 to server version: 4.1.12

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> use reptest;

Database changed

mysql> INSERT INTO rep_table VALUES ('test1', '4321', 'T',24);

Query OK, 1 row affected (0.00 sec)

mysql>

然后查看Slave机器的reptest数据库:

Slave#/var/eyou/mysql/bin/mysql –u root –p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 12 to server version: 4.1.12

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> use reptest;

Database changed

mysql>select * from reptable;;

+------+------+------+------+

| id | name | sex | age |

+------+------+------+------+

| test1| 4321 | T | 24 |

+------+------+------+------+

1 row in set (0.00 sec)

PS :

1,Slave机器的权限问题,不但要给slave机器File权限,还要给它REPLICATION SLAVE的权限。

2.在修改完Slave机器/etc/my.cnf之后,slave机器的mysql服务启动之前,记得要删除掉master.info

3,在show master status 或着show slave status 不正常时,看看.err是怎样说的。

4,Slave上Mysql的Replication工作有两个线程, I/O thread和SQL thread 。I/O 的作用是从master 3306端口上把它的binlog取过来(master在被修改了任何内容之后,就会把修改了什么写到自己的binlog等待slave更新),然后写到本地的relay-log,而SQL thread则是去读本地的relay-log,再把它转换成本Mysql所能理解的语句,于是同步就这样一步一步的完成.决定I/O thread的是/var/lib/mysql/master.info,而决定SQL thread的是/var/lib/mysql/relay-log.info.

双向复制模式

1:

Slave 机器设置权限,赋予Master机器FILE及Replication Slave权利.

Master#./var/eyou/mysql –u root –p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 2 to server version: 4.1.12

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> GRANT FILE ON *.* TO rep@192.168.0.217 IDENTIFIED BY ‘eyou’;

mysql> GRANT REPLICATION SLAVE ON *.* TO rep@192.168.0.217 IDENTIFIED BY ‘eyou’;

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯