mysql主从库与读写分离

mysql主从库与读写分离,第1张

一.mysql主从库与读写分离的实现理论

二.mysql配置

1.准备两台服务器安装mysql(也可以在一台中装两个mysql修改端口号避免冲突)

2.分别连接mysql

3.配置mysql

1.配置主库 monster

打开binary log

2.配置从库

主库授权

账号repl后面的是从库的ip地址 mysql是账号repl的密码

刷新

后面master_log_pos=0 表示从零开始同步 master_log_file 是上面SHOW MASTER STATUS 下面的file文件

在从库中开启主从跟踪

查看从库状态

从库中终止主从同步 stop slave

查看 my.cnf 文件 把 server -id=1 的字段删除 保留server-id=2 修改后保存 重启mysql 重新连接 开启主从同步start slave

查看从库状态 发现没有错误 到此主从同步配置已经完成.

读写分离的意思是,写入的时候向 a 服务器写入,而读出的时候从 b c d 甚至更多的服务器读出;这样的架构适合于读多写少的应用,最典型的就是火车购票系统,一般我们买票的时候要先查询好多次,包括车次啊,时间啊,这都是读 *** 作,而最后可能只买一张车票,这是写 *** 作;做了读写分离之后,可以将资源分配到最合理的地方,不会使某些资源闲置,而另一些资源不够用;

但是读写分离必然引发主从复制,试想一共有 10 张票,买了 1 张票,读的时候如果还是读到 10 张余票就不对了,因此需要主从复制,再读的时候,就只能读到 9 张余票了;

根据要求配置MySQL主从备份、读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记

现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用。

为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致

环境:192.168.0.1 (Master)

192.168.0.2 (Slave)

MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1

server-id = 1 //数据库ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值

log-bin=mysql-bin //启用二进制日志

binlog-do-db=data //需要同步的二进制数据库名

binlog-ignore-db=mysql //不同步的二进制数据库名这个同步后听说很麻烦,我没有同步

log-bin=/var/log/mysql/updatelog //设定生成的log文件名

log-slave-updates //把更新的记录写到二进制文件中

slave-skip-errors //跳过错误,继续执行复制

2、建立复制所要使用的用户

mysql>grant replication slave on *.* to identified by '********'

3、重启mysql

/usr/bin/mysqladmin -uroot shutdown

/usr/bin/mysql_safe &

4、现在备份Master上的数据

锁定后我直接tar.gz data这个库文件

mysql>FLUSH TABLES WITH READ LOCK

cd /var/lib/mysql

tar data.tar.gz data

接着直接执行了远程scp

scp ./data.tar.gz

5、登录Slave数据库服务器,修改my.cnf

server-id = 3 //2已经被用在另一个服务器上了,如果以后要再加Slave号接着往后数就OK了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5896639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存