企业高并发的成熟解决方案: 数据库主从复制

之前写过Discuz x3.1 读写分离,牵扯到关于数据库的主从复制,但是只对于某一个数据库进行主从复制(数据库中表的增删修改操作)。现在我们要配置的是整个数据库进行整个主从复制(数据库以及表的增删修改操作)。

说明: 此操作都在虚拟机中进行!

第一步: 数据库主从复制的准备工作

1. 数据库主从复制原理

20150304144010

2. 主从数据库环境搭建

主数据库服务器:192.168.197.4

从数据库服务器: 192.168.197.132

20150304144324

20150304144340

3. 主从数据库安装

本来想用mysql来搭建,可是CentOS 7.0默认的数据库是Mariadb,所以只好选择Mariadb来进行搭建安装。如何在CentOS7.0中安装Mariadb,请看之前写的博文。

20150304170505

 第二步: 配置主从复制

1. 配置主数据库

Mariadb配置和MySQL配置差不多。

20150304172755

2. 编辑主数据库的my.cnf文件

这个配置文件中用includedir /etc/my.cnf.d,包含此目录下的配置文件,所以只需要在my.cnf.d目录中创建配置文件即可。

20150304172906

3. 创建主服务器配置文件

20150304173350

4. 添加主服务器配置

20150304173802

5. 在主数据库上添加主从复制账号。

20150304175633

6. master.cnf配置出现问题

error: Found option without preceding group in config file: /etc/my.cnf.d/master.cnf at line: 3

20150304180324

20150304180504

7. 重启主数据库Mariadb

20150304175844

8. 查看主从数据库是否配置成功。

20150304180618

9. 配置从数据库

从数据库配置方法和主数据库配置方法差不多。

20150304180929

10. 创建从数据库配置文件

20150304181228

11. 添加从数据库配置

20150304181752

12. 重启从数据库

20150304182130

13. 从服务器连接主服务器

20150304182643

14. 开启从数据库连接

20150304182752

15. 查看从服务器连接状态

20150304183016

第三步: 测试主从复制

1. 查看从数据库

20150304183336

2. 在主数据库上添加数据库。

20150304183513

3. 再次查看从数据库

20150304183604

4. 如果主数据库重启,从服务器还需要重新连接么?

20150304184235

5. 如果主服务器正常,从服务器重启,还需要重新连接么?

20150304184846

CentOS 7.0: 安装Mariadb

本来想在Centos7.0上搭建mysql数据库主从复制,结果CentOS7.0默认的是Mariadb,至于Mariadb是啥?通过百度百科得知如下:

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
既然这样我们就开始来安装Mariadb,来玩玩!

第一步: 安装Mariadb

1. CentOS 7.0 版本信息查看

20150304161132

2. 安装Mariadb

20150304161236

3. Mariadb安装成功

20150304161929

第二步: 测试Mariadb

1. 连接Mariadb

报错: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

20150304162125

2. 解决连接不上的问题

20150304162554

3. 重新连接Mariadb

默认密码为空

20150304162726

4. 查看数据库

20150304162849

 

5. 退出数据库

20150304163319

mysql: 数据库无法连接,日志太多。

自从上次因为系统盘的数据满了,导致mysql无法连接,所以就修改mysql数据库文件路径,转移到数据盘。结果这段时间mysql总是链接不上,所以只好一步一步找原因,来解决这个问题。

第一步: 查找链接不上的原因

1. 查看磁盘大小

发现数据盘也满了,不太可能啊,数据盘有50个G,咋就一下就满了呢?

20150303112754

2. 查看数据盘的文件大小

发现mysql/datadir文件夹占了46个G,这个文件夹不就是mysql数据库文件目录。

20150303112846

3. 查看数据库文件夹

全部都是日志文件,并且大部分都是日志文件占容量了。

20150303113119

20150303113231

4. 再次查看磁盘容量

20150303113741

第二步: 解决mysql连接不上的问题

1. 删除mysql-bin.000*日志文件

20150303113644

2. 修改mysql的配置文件my.cf

20150303113718

3. 注释mysql-bin日志

20150303115000

4. 重启mysqld服务

发现报错,原因是不仅要注释log-bin=mysql-bin,还要注释binlog_format=mixed.

20150303115736

5. 再次修改mysql配置文件

20150303115702

6. 重启成功。

20150303121505