与服务器一起的日子

  • mysql
  • linux
  • 高可用
  • nginx
与服务器一起的日子
冰冷的机器也熄不灭火热的心
  1. 首页
  2. centos
  3. 正文

MySql高可用——主从架构

2017年10月31日 592点热度 0人点赞 0条评论

MySql最容易实现的高可用框架就是主从架构,主从架构最简单,就是一个写入、一个复制。简单的描述如下图:

mysql主从

 

这个图的主从架构有一个缺点,就是主数据库的负载太重,容易因为连接数达到上限出现错误,导致服务下线的问题。这是最简单的主从架构,可以实现MySQL服务的数据库备份。

架构的实现

这种的主从架构的实现需要两台MySQL数据库服务器,我的两个数据库的ip地址是192.168.1.21和1292.168.1.22两个。

安装MySQL

mysql的安装请参考我的另外一片博文(centos7安装mysql服务)

配置高可用

1.我们配置高可用之前,看一下我们的数据库。

192.168.1.21的数据库

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

192.168.1.22的数据库

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.03 sec)

2.我们看出,两个服务器的数据库是一致的,这个时候,我们在两个数据库服务器建立一个空的test数据库。

create database test;

3.在运维的时候,需要锁定mysql的写入

use database test;

FLUSH TABLES WITH READ LOCK;

4.配置主服务器的my.cnf文件

log-bin = mysql-bin##启用二进制日志记录
server-id = 1##服务器id,从1开始往后排
binlog-do-db=test##同步的数据库
binlog-ignore-db=mysql##系统数据库,不同步的数据库
binlog-ignore-db=information_schema##系统数据库,不同步的数据库
binlog-ignore-db=performance_schema##系统数据库,不同步的数据库
binlog-ignore-db=sys##系统数据库,不同步的数据库

5.配置从数据库的my.cnf文件

log-bin = mysql-bin
server-id = 2
replicate-do-db=test
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60

6.在主数据库上将数据库所建立的文件夹scp过去

scp -r /var/mysql/test 192.168.1.22:/var/mysql/

7.解锁数据库

UNLOCK TABLES;

8.重启mysqld服务

service mysqld restart

9.查看主节点状态。

show master status\G

mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000003
Position: 154
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql,information_schema,performance_schema,sys
Executed_Gtid_Set:
1 row in set (0.00 sec)

10设置从节点的同步。

change master to
master_host='192.168.1.21',
master_user='root',##用户不一定非得root,可以专门创建一个用于同步的用户
master_password='root',
master_log_file='mysql-bin.000003',
master_log_pos=154;

11.查看从节点状态

show slave status \G

mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.21
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 154
Relay_Log_File: bogon-relay-bin.000008
Relay_Log_Pos: 367
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test
Replicate_Ignore_DB: mysql,information_schema,performance_schema,sys
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 154
Relay_Log_Space: 740
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: c921096d-bcf2-11e7-8091-000c29a18ca9
Master_Info_File: /var/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)

当出现IO的yes和sql的yes的时候就说明配置正确,可以工作了

这个架构的缺点是主数据库负担太重,如何减轻主数据库的负担,如下图

mysql主从减轻负载

讲数据库的读放到从服务器上,实现主服务器的读写分离。需要在代码当中进行区分。

标签: mysql 主从架构 实战 高可用
最后更新:2017年10月31日

jhin

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2024 与服务器一起的日子. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang