Mysql主从方案的实现
Mysql主从方案介绍
mysql主从方案主要作用:
读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
发扬不同表引擎的优点。目前Myisam表的查询速度比innodb略快,而写入并发innodb比myIsam要好。那么,我们可以使用innodb作为master,处理高并发写入,使用master作为slave,接受查询。或在myisam slave中建立全文索引,解决innodb无全文索引的弱点。
热备,slave和master的数据“准实时”同步。
准备工作。先分别安装两台MYSQL。
系统环境:
OS:RHEL5.4
主:192.168.10.197
从:192.168.10.198
1、mysql 的安装这里就不介绍了,详见安装文档。
2、my.cnf配置
a、配置MASTER
点击(此处)折叠或打开
- [client]
- port = 3306
- socket = /tmp/mysql.sock
- [mysqld]
- port = 3306
- socket = /tmp/mysql.sock
- basedir=/usr/local/mysql
- datadir=/home/mysqldata
- log-slow-queries=slow_query.txt
- log-bin=mysql-bin197
- long_query_time=2
- skip-locking
- skip-name-resolve
- skip-innodb
- bind-address=192.168.10.197
- max_allowed_packet = 256M
- query_cache_size=256M
- max_connections=2000
- max_connect_errors=10000
- key_buffer_size=6000M
- read_buffer_size=32M
- read_rnd_buffer_size = 32M
- myisam_sort_buffer_size=256M
- tmp_table_size=512M
- old-passwords
- interactive_timeout=60
- wait_timeout=60
- connect_timeout=120
- table_cache=8192
- thread_cache_size=256
- sort_buffer_size=64M
- back_log = 500
- thread_concurrency=32
- server-id=1
- log-bin=mysql-bin240
- binlog-do-db=phpcmsv9
- binlog-ignore-db=mysql
- expire_logs_days=10
- [mysqldump]
- quick
- max_allowed_packet = 1024M
- [mysql]
- no-auto-rehash
- [isamchk]
- key_buffer = 1024M
- sort_buffer_size = 32M
- read_buffer = 2M
- write_buffer = 2M
- [myisamchk]
- key_buffer = 1024M
- sort_buffer_size = 32M
- read_buffer = 2M
- write_buffer = 2M
- [mysqlhotcopy]
- interactive-timeout
注释:红色是修改的部分。
其中,作为主机,server-id必须为1.
binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。
重启master数据库,运行检查:
点击(此处)折叠或打开
- mysql> show master status; #检查是否以master形式启动了。
- +---------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +---------------------+----------+--------------+------------------+
- | mysql-bin240.000001 | 2342775 | phpcmsv9 | mysql |
- +---------------------+----------+--------------+------------------+
- 1 row in set (0.00 sec)
- mysql> show variables like "%log%";
#需要看到这样的一行,说明binlog已经开启了: log_bin | ON
在master上为slave建立用户
点击(此处)折叠或打开
- mysql> grant replication slave, reload, super on *.* to 'backup'@'192.168.10.198' identified by '123';
这样,主机配置完毕。
b、slave配置
点击(此处)折叠或打开
- [client]
- port = 3306
- socket = /tmp/mysql.sock
- [mysqld]
- port = 3306
- socket = /tmp/mysql.sock
- basedir=/usr/local/mysql
- datadir=/home/mysqldata
- log-slow-queries=slow_query.txt
- log-bin=mysql-bin198
- long_query_time=2
- skip-locking
- bind-address=192.168.10.198
- skip-name-resolve
- skip-innodb
- max_allowed_packet = 256M
- query_cache_size=256M
- max_connections=2000
- max_connect_errors=10000
- key_buffer_size=6000M
- read_buffer_size=32M
- read_rnd_buffer_size = 32M
- myisam_sort_buffer_size=256M
- tmp_table_size=512M
- old-passwords
- interactive_timeout=60
- wait_timeout=60
- connect_timeout=120
- table_cache=8192
- thread_cache_size=256
- sort_buffer_size=64M
- back_log = 500
- thread_concurrency=8
- server-id=2
- master-host=192.168.10.197
- master-user=backup
- master-password=123
- master-port=3306
- replicate-do-db=phpcmsv9
- replicate-ignore-db=mysql
- master-connect-retry=60
- expire_logs_days=10
- [mysqldump]
- quick
- max_allowed_packet = 1024M
- [mysql]
- no-auto-rehash
- [isamchk]
- key_buffer = 1024M
- sort_buffer_size = 32M
- read_buffer = 2M
- write_buffer = 2M
- [myisamchk]
- key_buffer = 1024M
- sort_buffer_size = 32M
- read_buffer = 2M
- write_buffer = 2M
- [mysqlhotcopy]
- interactive-timeout
注释:红色部分为修改的地方
1.启动主服务器和从服务器服务,在从服务器192.168.17.2上使用命令slave start启动复制;
2.随便使用命令show slave status;
如果出现主从复制报错了
点击(此处)折叠或打开
- mysql> show slave status \G;
- *************************** 1. row ***************************
- Slave_IO_State: Connecting to master
- Master_Host: 192.168.10.197
- Master_User: backup
- Master_Port: 3306
- Connect_Retry: 60
- Master_Log_File: mysql-bin240.000001
- Read_Master_Log_Pos: 2342431
- Relay_Log_File: localhost-relay-bin.000001
- Relay_Log_Pos: 4
- Relay_Master_Log_File: mysql-bin240.000001
- Slave_IO_Running: No
- Slave_SQL_Running: Yes
- Replicate_Do_DB: phpcmsv9
- Replicate_Ignore_DB: mysql
- 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: 2342431
- Relay_Log_Space: 106
- 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: NULL
- Master_SSL_Verify_Server_Cert: No
- Last_IO_Errno: 1130
- Last_IO_Error: error connecting to master 'backup@192.168.10.197:3306' - retry-time: 60 retries: 86400
- Last_SQL_Errno: 0
- Last_SQL_Error:
- 1 row in set (0.00 sec)
- ERROR:
- No query specified
这是由于MASTER没有赋予权限的关系
3在从服务器192.168.17.2运行slave stop;停止复制命令
4输入
点击(此处)折叠或打开
- mysql>CHANGE MASTER to MASTER_HOST='192.168.15.197', MASTER_PORT=3306, MASTER_USER='backup', MASTER_PASSWORD='123', MASTER_LOG_FILE=’mysql-bin240.000001';, MASTER_LOG_POS=2342775;
5然后重新启动slave start 命令后
点击(此处)折叠或打开
- mysql> show slave status \G;
- *************************** 1. row ***************************
- Slave_IO_State: Waiting for master to send event
- Master_Host: 192.168.10.197
- Master_User: backup
- Master_Port: 3306
- Connect_Retry: 60
- Master_Log_File: mysql-bin240.000001
- Read_Master_Log_Pos: 2342775
- Relay_Log_File: localhost-relay-bin.000002
- Relay_Log_Pos: 598
- Relay_Master_Log_File: mysql-bin240.000001
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
- Replicate_Do_DB: phpcmsv9
- Replicate_Ignore_DB: mysql
- 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: 2342775
- Relay_Log_Space: 757
- 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:
- 1 row in set (0.00 sec)
- ERROR:
- No query specified
在从库192.168.17.2 select查询,发现后面插入的两条语句已经同步过来了,随后继续插入测试没有发现问题。
Mysql主从方案的实现的更多相关文章
- LVS+Keepalived+Squid+Nginx+MySQL主从高性能集群架构部署方案
方案一,在tomcat的workers.properties里面配置相关条件 worker.tomcat.lbfactor= worker.tomcat.cachesize= worker.tomca ...
- MySQL主从(MySQL proxy Lua读写分离设置,一主多从同步配置,分库分表方案)
Mysql Proxy Lua读写分离设置 一.读写分离说明 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELE ...
- Mysql主从同步配置方案(Centos7)
最近在做项目高可用时,需要使用数据同步.由于只有双节点,且采用主主同步可能存在循环同步的风险,故综合考虑采用Mysql主从同步(Master-Slave同步). 可能没有接触过Mysql数据同步时,可 ...
- 高性能Mysql主从架构的复制原理及配置详解
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
- 恢复MySQL主从数据一致性的总结
今日上午,同事告知,MySQL主从数据库的数据不一致,猜测备库在同步过程中出现了问题,于是,登上备库,使用 mysql> show slave status\G查看,果然,备库在insert语句 ...
- MySQL主从数据库同步延迟问题解决(转)
最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...
- MySQL HA方案之MySQL半复制+MHA+Keepalived+Atlas+LVS[转]
MySQL HA方案之MySQL半复制+MHA+Keepalived+Atlas+LVS 简介 目前Mysql高可用的方案有好多,比如MMM,heartbeat+drbd,Cluster等,还有per ...
- Mysql主从数据库架构的复制原理及配置详解
1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- 转:高性能Mysql主从架构的复制原理及配置详解
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
随机推荐
- 谈谈PCI的GXL
最近在测试PCI的GXL,对测试的结果大致列举一下. 何为GXL: GXL( Geoimaging Accelerator, GXL )是PCI公司面向海量影像自动化生产提出的新一代解决方案产品,主要 ...
- Leetcode_34_Search for a Range
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/44021767 Given a sorted array o ...
- 纯命令提交代码到git仓库(教你怎么装逼)
如果不喜欢用命令的请点链接:http://blog.csdn.net/xiangzhihong8/article/details/50715427 我这里用纯命令,主要是因为这两天不知道什么原因,ba ...
- 一个简单的基于 DirectShow 的播放器 2(对话框类)
上篇文章分析了一个封装DirectShow各种接口的封装类(CDXGraph):一个简单的基于 DirectShow 的播放器 1(封装类) 本文继续上篇文章,分析一下调用这个封装类(CDXGrap ...
- 苹果新的编程语言 Swift 语言进阶(九)--方法和下标
一.方法 方法是与特定类型相关的函数.与属性一样,方法也包括实例方法和类型方法. 类.结构.枚举都能定义实例方法,用来封装或实现给定类型的一个实例相关的功能或特定任务. 类.结构.枚举也能定义与类型本 ...
- css选择器语法速查
通用选择器 *{} 类似于通配符,匹配文档中所有元素类型: 类型选择器 h1,h2,p{} 匹配以逗号隔开元素列表中的所有元素 类选择器 .glass{} or p.glass{} id选择器 #id ...
- java的finalize方法使用
1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法. finalize()与C++中的析构函数 ...
- Mac电脑配置Apache服务器详细说明
Mac电脑服务器配置过程,无论是个人学习,还是公司测试都非常实用,流程精简易懂,用于让Mac电脑做服务器方便做网络数据请求的测试. 第一步:定位到 Apache2 目录 $ cd /etc/Apach ...
- Android 在Fragment中执行onActivityResult不被调用的简单解决方法
在Android开发中,我们经常会用到FragmentActivity下嵌套多个Fragment,但是在开发过程中会发现在嵌套的Fragment中使用onActivityResult回调方法没有被执行 ...
- 继续死磕SDRAM控制器
SDRAM控制器 博主上一篇介绍了一些SDRAM的基本原理是否有必要学习使用纯Verilog写一个SDRAM控制器,接下来记录SDRAM控制器的工作原理.首先是上电初始化. 上电初始化 时序图中,tR ...