一、数据库集群使用场景

1.随着访问量的不断增加,单台MySQL数据库服务器压力不断地增加,需要对MySQL进行优化和架构改造,如果MySQL优化不能明显改善压力,可以使用高可用、主从复制、读写分离出来、拆分库、拆分表等方法来进行优化。

2.MySQL主从复制集群在中小企业、大型企业中被广泛应用,MySQL主从复制的目的实现数据冗余备份,将master数据库数据定时同步至slave库中,一旦master数据库宕机,可以将web应用数据库配置快速切换到salve数据库,确保Web应用有较高的可用率,MySQL主从复制架构图如图1-1所示。

二、MySQL主从复制实战

MySQL主从复制环境构建至少需要2台服务器,可以配置1主多从、多主多从,以1主1从为例,MySQL主从复制架构实战步骤如下:

1.在虚拟机上克隆一台CentOS主机

2.开启两台CentOS 7主机,并做相关配置

1)配置两台CentOS主机名称

[root@localhost sky9890]# hostnamectl

Static hostname: #localhost.localdomain

Transient hostname: localhost.localdomain

Icon name: computer-vm

Chassis: vm

Machine ID: 6c938bf5dc5b492088dafb0e745f01ec

Boot ID: 170db1b33955402daa0ee3d6911486ba

Virtualization: vmware

Operating System: CentOS Linux 7 (Core)

CPE OS Name: cpe:/o:centos:centos:7

Kernel: Linux 3.10.0-862.11.6.el7.x86_64

Architecture: x86-64

[root@localhost sky9890]# hostnamectl  set-hostname  MySQL_Master  #配置永久生效的主机名

[root@localhost sky9890]# hostnamectl#查看主机名称,重新启动系统后生效

Static hostname: mysql_master

Pretty hostname: MySQL_Master

..................................................................

[root@localhost sky9890]# hostnamectl set-hostname MySQL_Slave

2)Master和Slave主机网络

MySQL Master:192.168.153.142#配置Master IP

[root@localhost sky9890]# vim  /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE="Ethernet"

BOOTPROTO="static"

NAME="ens33"

UUID="9f75af90-bd5d-467e-b433-216456e4a49e"

DEVICE="eth0"

ONBOOT="yes"

IPADDR=192.168.153.142

NETMASK=255.255.255.0

GATEWAY=192.168.153.2

MySQL Slave:192.168.153.143    #配置Slave IP

[root@localhost sky9890]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE="Ethernet"

BOOTPROTO="static"

DEFROUTE="yes"

IPV4_FAILURE_FATAL="no"

IPV6INIT="yes"

IPV6_AUTOCONF="yes"

IPV6_DEFROUTE="yes"

IPV6_FAILURE_FATAL="no"

IPV6_ADDR_GEN_MODE="stable-privacy"

NAME="ens33"

DEVICE="eth0"

ONBOOT="yes"

IPADDR=192.168.153.143

NETMASK=255.255.255.0

GATEWAY=192.168.153.2

3.MySQL Master配置

[root@mysql_master sky9890]# vim  /etc/my.cnf

[client]

port            = 3306

socket          = /tmp/mysql.sock

[mysqld]

port            = 3306

socket          = /tmp/mysql.sock

skip-external-locking

key_buffer_size = 256M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

read_buffer_size = 1M

read_rnd_buffer_size = 4M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size= 16M

thread_concurrency = 8

log-bin=mysql-bin

binlog_format=mixed

server-id  = 1

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

4.MySQL Master创建用户及授权

[root@mysql_master etc]# useradd testtongbu

[root@mysql_master etc]# passwd testtongbu

[root@mysql_master etc]# mysql -uroot  -p

MySQL [(none)]> grant replication slave on *.*  to  'testtongbu '@'%'  identified by '12345678';

MySQL [(none)]> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000008 |      867 |              |                  |

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

5.MySQL Slave配置

[root@mysql_master sky9890]# vim  /etc/my.cnf

[client]

port            = 3306

socket          = /tmp/mysql.sock

[mysqld]

port            = 3306

socket          = /tmp/mysql.sock

skip-external-locking

key_buffer_size = 256M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

read_buffer_size = 1M

read_rnd_buffer_size = 4M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size= 16M

thread_concurrency = 8

#log-bin=mysql-bin

#binlog_format=mixed

server-id  = 2

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

[root@mysql_slave sky9890]#

MySQL [(none)]> change master to master_host='192.168.153.142', master_port=3306, master_user='testtongbu',

master_passwork='12345678', master_log_file='mysql-bin.000008', master_log_pos=867;

MySQL [(none)]> slave start;

MySQL [(none)]> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.153.142

Master_User: testtongbu

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000008

Read_Master_Log_Pos: 867

Relay_Log_File: mysql_slave-relay-bin.000005

Relay_Log_Pos: 596

Relay_Master_Log_File: mysql-bin.000008

Slave_IO_Running: Yes

Slave_SQL_Running: Yes  #IO、SQL线程状态为Yes,代表slave已正常连接master实现同步

Replicate_Do_DB:

Replicate_Ignore_DB:

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: 867

Relay_Log_Space: 904

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

6.测试同步结果

MySQL Master操作:

MySQL [(none)]> create database tongbu_test charset=utf8;

MySQL [(none)]> use  tongbu_test;

MySQL [tongbu_test]> create table test(id varchar(20),name varchar(20));

MySQL [tongbu_test]> show tables;

MySQL [tongbu_test]> create table student(id varchar(20),name varchar(20));

ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock

MySQL [tongbu_test]> unlock tables;

MySQL [tongbu_test]> create table student(id varchar(20),name varchar(20));

MySQL [(none)]> insert into student values("001","吴氏亲宗");

MySQL Slave操作:

通过MySQL Slave测试数据来看,主从数据库同步成功。

7.MySQL主从同步排错思路

1)server-id,主从不能相同。

2)slave指定master IP、用户名、密码、bin-log文件名及position的信息要一致。

3)Slave_IO_Runngin:Yes  Slave_SQL_Runngin:Yes,只有这两个状态都为Yes,才算是正从同步成功。

4)当主从产生延迟后,如何忽略错误后,继续同步?

MySQL Master:

MySQL [(none)]> flush tables with read block; #将数据库设置为全局读锁,不允许写入新数据。

MySQL Slave:

MySQL [tongbu_test]> stop slave;

MySQL [tongbu_test]> set global sql_salve_skip_counter =1

MySQL [tongbu_test]> start  slave;

注意以上几步至少要操作一次,有可能要两次才能解决问题。

最后将master端解锁:MySQL [(none)]> unlock tables;

mysql数据库集群版_MySQL数据库集群实战相关推荐

  1. mysql数据库集群版_MySql数据库集群

    什么是集群 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术. mysql集群技术 ...

  2. linux mysql 实战_Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06

    Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06 视频教程学习地址 Oracle/MySQL数据库学习专用QQ群:336282998.189070296 学完风哥本课程能熟悉 ...

  3. mysql 集群实践_MySQL Cluster集群探索与实践

    MySQL集群是一种在无共享架构(SNA,Share Nothing Architecture)系统里应用内存数据库集群的技术.这种无共享的架构可以使得系统使用低廉的硬件获取高的可扩展性. MySQL ...

  4. mysql数据库5.7破解版_MySQL数据库5.7下载

    MySQL数据库5.7v5.7.22.1是一款可以免费使用的小型数据库,之所以说它是小型数据库,是因为是拿去和DB2等大型数据库相比的.而且,MySQL更新到现在这个版本之后,功能也是越来越强大且全面 ...

  5. mysql insert 不需要日志_MySQL数据库性能优化(1)「转」

    1.MySQL概述 从本文开始我们将讨论建立在块存储方案之上的关系型数据库的性能优化方案和集群方案.关系型数据库的选型将以创业公司.互联网行业使用最广泛的MySQL数据为目标,但是MySQL的安装过程 ...

  6. mysql 5.74安装教程_MySQL数据库作为关系型数据库中的佼佼者,因其体积小,速度快,成本低,不仅受到了市场的极大追捧,也受到了广大程序员的青睐。接下来,就给大家说一下,MySQL的...

    MySQL数据库作为关系型数据库中的佼佼者,因其体积小,速度快,成本低,不仅受到了市场的极大追捧,也受到了广大程序员的青睐.接下来,就给大家说一下,MySQL的下载和安装: 一.MySQL的下载 第一 ...

  7. mysql数据库建新分区_mysql数据库分区

    日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕.分表和表分 ...

  8. mysql数据库引擎博客_mysql 数据库引擎常识全集

    1.mysql引擎简介: MyISAM引擎是mysql关系数据库管理系统的默认存储引擎(mysql 5.5以前).这种mysql表存贮结构从的旧的ISAM代码扩展出许多有用的功能.在新版本的mysql ...

  9. mysql部门人员排序设计_MySQL数据库访问性能优化

    MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...

  10. mysql数据库缓存为多久_mysql数据库查询缓存总结

    概述 查询缓存(Query Cache,简称QC),存储SELECT语句及其产生的数据结果.闲来无事,做一下这块的总结,也做个备忘! 工作原理 查询缓存工作原理如下: 缓存SELECT操作的结果集和S ...

最新文章

  1. 关于Android中的乱码
  2. 阿帕奇搭建文件服务器,关于LINUX文件服务器简单搭建---NFS与APACHE服务
  3. 填写各类表格时有时在多个选择前有小方框 在其中打勾
  4. 左值、右值、左值引用、右值引用
  5. 使用std::cout不能输出显示
  6. 【python opencv 计算机视觉零基础到实战】二、 opencv文件格式与摄像头读取
  7. LeetCode(90):子集 II
  8. mysql代码提示_聊一聊 php 代码提示
  9. java xml 解析 列表_用Java解析高级XML
  10. python日期时间_Python日期时间
  11. 最优化算法之粒子群算法(PSO)
  12. Windows全局鼠标手势——MouseInc
  13. MPU6050-扫盲
  14. Android-工作遭遇-URLConnection原生请求http和https忽略证书
  15. 小程序上线发布后,实现版本自动更新,用户无感知
  16. filter_input
  17. 学会敬酒礼仪 不做酒席菜鸟
  18. VScode配置C/C++环境(适合大学生C++课程,从零开始配置)
  19. Pinyin4J使用方法
  20. 智能推荐算法学习总括

热门文章

  1. Tomcat------如何配置域名和80端口
  2. 写一个NSString类的实现
  3. 快来对号入座!四句话告诉你怎样的企业适用于移动平台
  4. C# 中 动态获得或设置一个对象的值
  5. Spring bean 通过实现 InitializingBean ,DisposableBean 接口实现初始化方法和销毁前操作
  6. maven 下载不到jar包时候,更改阿里源
  7. 我为什么要使用Webpack?
  8. 李瑾博士:信誉的建立是否“不计成本”?
  9. backbond Model实现
  10. 转 markdown编写规则、语法