MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

标签: mysql 复制 master | 发表时间:2013-08-08 16:44 | 作者:open520yin
出处:http://blog.csdn.net

接触php已快有3年了,一直想有所突破,最近看了下分布和数据库读写分离。总算也小有成果.....前段时间发布了,用ngix实现分流

nginx 配置轮询分流-实现负载均衡【测试通过】

今天就来分享一下,数据库读写分离并且同步。我目前,介绍的是1台写入服务器,n台读取服务器....

写这个的同时,我在思考一个问题,如果写入压力过大的时候,1台服务器写入不够用,那么写入该怎么办!利用队列,缓存!一台服务器慢慢写?还求大神给解释,求带!


1,mysql的配置

mysql的配置我就不多说了,看我 另一篇文章

CentOS 5.x,6.0编译安装Nginx1.2.3+MySQL5.5.15+PHP5.3.6

我是再这个环境下做测试的,我是配置了1台。利用VMware Workstation拷贝出来多台服务器的,所以环境绝对一样。


2,场景描述

主数据库服务器:192.168.10.130
从数据库服务器:192.168.10.131


3 ,配置主服务器

修改从服务器的配置文件,my.cnf 不一定路径和我一样哦,注意修改

vi etc/my.cnf
确定 server-id = 1,并确保这个ID没有被别的MySQL服务所使用。

启动mysql服务(192.168.10.130)

/etc/init.d/mysqld  start

通过命令行登录管理MySQL服务器
mysql -uroot -p

授权给从数据库服务器192.168.10.131
mysql> GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.10.131' identified by '123';

查询主数据库状态
Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 261 | | |
+------------------+----------+--------------+------------------+

记录下 FILE (mysql-bin.000005) 及 Position(261) 的值,在后面进行从服务器操作的时候需要用到。

4,配置从服务器


修改从服务器的配置文件,my.cnf 不一定路径和我一样哦,注意修改

vi etc/my.cnf
将 server-id = 1修改为 server-id = 2,并确保这个ID没有被别的MySQL服务所使用。

启动mysql服务
/opt/mysql/init.d/mysql start

通过命令行登录管理MySQL服务器
mysql -uroot -p

执行同步SQL语句

mysql> change master to
master_host=’192.168.10.130’,
master_user=’rep1’,
master_password=’123’,
master_log_file=’mysql-bin.000005’,
master_log_pos=261;

注意上面的数据要和主服务器一样,否则同步会失败!
 

正确执行后启动Slave同步进程

mysql> start slave;

主从同步检查

mysql> show slave status\G

其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

如果不是,请检查上面是否那一步骤有问题!可以留言给我。。。如果都YES 可以进入下一步操作


5,第一次同步主从服务器数据

锁定主服务器mysql:

mysql> FLUSH TABLES WITH READ LOCK;

锁定从服务器mysql:

mysql> FLUSH TABLES WITH READ LOCK;

将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器,建议通过tar归档压缩后再传到从服务器解压覆盖。

开启主服务器mysql:

mysql> UNLOCK TABLES;

开启从服务器mysql:

mysql> UNLOCK TABLES;

6,测试是否同步

在主服务器上操作:

 mysql> create database first_db;
 mysql> use first_db;
 mysql> create table first_tb(id int(3),name char(10));
 mysql> INSERT INTO `first_tb` VALUES ('1', '1');

在从服务器上查看....

mysql> show databases;
=============================
+--------------------+
| Database |
+--------------------+
| information_schema |
| first_db |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)
=============================


数据已经同步过来了。现在只要在主服务器上有任何操作,都会自动同步到从服务器来。





作者:open520yin 发表于2013-8-8 16:44:01 原文链接
阅读:0 评论:0 查看评论

相关 [mysql 复制 master] 推荐:

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

- - CSDN博客推荐文章
接触php已快有3年了,一直想有所突破,最近看了下分布和数据库读写分离. 总算也小有成果.....前段时间发布了,用ngix实现分流. nginx 配置轮询分流-实现负载均衡【测试通过】. 今天就来分享一下,数据库读写分离并且同步. 我目前,介绍的是1台写入服务器,n台读取服务器..... 写这个的同时,我在思考一个问题,如果写入压力过大的时候,1台服务器写入不够用,那么写入该怎么办.

MySQL Multi-Master实现方式

- - P.Linux Laboratory
本文内容遵从 CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/how_to_mysql_multi_master.html. MySQL Mutil-Master Replication喊了很久了,但是MySQL一直没有去,虽然在MySQL源码中有注释将实现Multi-Master,mi结构体也为Multi-Master做好了准备,但是却一直不见MySQL发布.

mysql master/slave 数据库备份

- - 数据库 - ITeye博客
出自:http://blog.csdn.net/mer1234567/article/details/7405775.       Mysql内建的复制功能是构建大型,高性能应用程序的基础. 将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.

搭建MongoDB主从复制(Master-Slave)集

- - CSDN博客数据库推荐文章
  主从复制是MongoDB数据库一种特性,它通过数据备份来提高数据库的容灾能力. 但是由于主从复制并不能自动实现故障转移的特性,MongoDB在1.6版本开发了新的复制模式:Replicate Sets. MongoDB建议不要再使用Master-Slave模式对数据进行备份. 但是对于学习来说,我们仍可以了解一下MongoDB的主从复制模式.

MySQL Master-Slaver Replication 讓資料庫資料有備援

- - SSORC.tw
重新複習一下  資料庫同步 – MySQL + replication. Master / Slaver 架構就是要讓 MySQL 資料庫系統有著備援的保障. 基本運作方式就是,MySQL  Master 這台上只要有新增刪除修改,就會記錄在 binlog 檔裡,這時 Slaver 就可以透過 Master 授權的帳號去同步資料 ( Replication ),這是單向的.

mysql主从复制

- - SQL - 编程语言 - ITeye博客
从库的配置,mysql5.5不支持配置文件的配置了,问了数据库的人,用命令行指定. 修改从库的配置 #default-storage-engine = InnoDB #修改 default-storage-engine = blackhole server-id = 11215004 #新增 replicate-do-db = test log-bin = mysql-bin #新增 binlog_format = row.

MySQL主从复制配置

- - 天空极速
在实际企业应用环境当中,单台MySQL数据库是不足以满足日后业务需求的. 譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止. 使用MySQL主从复制的好处有:. 1、采用主从服务器这种架构,稳定性得以提升. 如果主服务器发生故障,我们可以使用从服务器来提供服务;. 2、在主从服务器上分开处理用户的请求,可以提升数据处理效率;.

MySQL 5.6 测试之 Replication(主从复制)

- - MySQL 中文网 -
MySQL 5.6测试之Replication. MySQL 5.6版本相比以前新增了很多令人激动的特性,简要介绍见: 转:MySQL 5.6新特性. 性能方面已经做过测试了,详细请见: MySQL 5.6 vs MariaDB 5.5 vs Percona(5.5 & 5.6) 之TPCC性能测试.

MySQL半同步复制(Semisynchronous Replication)

- - IT技术博客大学习
MySQL5.5引入了半同步复制(Semi-synchronous Replication),以下是对于半同步复制的认知和理解:. 半同步启动需要主从两端都需要加载安装各自对应的semi模块,从库端支持半同步功能的数量至少一台;主库端当一个事务成功提交后,并不及时反馈给前端用户,该线程会被临时block,等待由从库端返回确认该条事务也同时成功写入到relay log中的receipt(回执确认),这时主库线程才返回给当前session告知操作完成,半同步复制并不关心在从库一端该事务是否都被执行并被提交完成.