• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL之——MS主从复制(读写分离)实现

MySQL之——MS主从复制(读写分离)实现

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL,MS,主从复制等相关知识,希望本文的分享对您有所帮助
今天,给大家带来一篇如何配置MySQL主从复制,以实现MySQL的读写分离。今天这篇博文我们是基于MySQL 5.6来实现MySQL的主从复制的。

一、服务器规划

首先我们需要两台服务器,一台作Master服务器,一台作Slave服务器。

我这里的服务器为基于VMWare的两台虚拟机,操作系统为:CentOS 6.5。具体规划如下:

594.png

二、安装数据库

Master和Slave服务器都需要安装MySQL数据库,具体安装步骤请参见博文《MySQL之——CentOS6.5 编译安装MySQL5.6.16》,我就不在这里重复了。

三、主从配置

MySQL5.6开始主从复制有两种方式:基于日志(binlog);基于GTID(全局事务标示符)。这里我们以基于日志(binlog)的方式为例。另外,MySQL官方也给出了MySQL Replication相关的教程,链接为http://dev.mysql.com/doc/refman/5.6/en/replication.html 建议大家阅读下。

1、修改主数据库配置文件

输入命令

vim /etc/my.cnf
[mysqld]   
server-id=1   
log-bin=/data/mysql3306log/mysql-bin   
sync_binlog=1   
binlog_format=mixed    
#注意:下面这个参数需要修改为服务器内存的70%左右   
innodb_buffer_pool_size = 512M   
innodb_flush_log_at_trx_commit=1   
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO   
lower_case_table_names=1   
log_bin_trust_function_creators=1

修改之后要重启mysql:

service mysqld restart

2、修改从数据库的的配置文件

server-id配置为大于1的数字即可

vim /etc/my.cnf
[mysqld]   
server-id=2   
log-bin=/data/mysql3306log/mysql-bin   
binlog_format=mixed  
relay-log=/data/mysql3306log/slave-relay-bin      
relay-log-index=/data/mysql3306log/slave-relay-bin.index  
sync_binlog=1   
#注意:下面这个参数需要修改为服务器内存的70%左右   
innodb_buffer_pool_size = 512M   
innodb_flush_log_at_trx_commit=1   
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO   
lower_case_table_names=1   
log_bin_trust_function_creators=1

修改之后要重启mysql:

service mysqld restart

3、SSH登录到主数据库

(1)在主数据库上创建用于主从复制的账户(192.168.0.153换成你的从数据库IP):

首先登陆MySQL服务器

mysql -uroot -proot

然后在MySQL服务器中执行如下命令:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'lyz'@'192.168.0.153' IDENTIFIED BY 'lyz';

(2)主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标):

mysql> FLUSH TABLES WITH READ LOCK;

(3)然后克隆一个SSH会话窗口,在这个窗口打开MySQL命令行:

首先登陆MySQL服务器

mysql -uroot -proot

执行如下命令

mysql> SHOW MASTER STATUS;

结果为:

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |   329 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

退出MySQL

mysql> exit;

在这个例子中,二进制日志文件是mysql-bin.000001,位置是329,记录下这两个值,稍后要用到。
(4)在Master服务器上使用mysqldump命令创建一个数据快照:

#mysqldump -uroot -proot -h127.0.0.1 -P3306 --all-databases  --triggers --routines --events >all.sql

# 接下来会提示你输入mysql数据库的root密码,输入完成后,如果当前数据库不大,很快就能导出完成。
(5)解锁第(2)步主数据的锁表操作:

mysql> UNLOCK TABLES;

(6)将第(4)步生成的all.sql复制到Slave服务器

scp ./all.sql liuyazhuang153:/data/mysql/backup

4、SSH登录到从数据库

(1)导入主数据库的快照

# cd /data/mysql/backup   
# mysql -uroot -proot -h127.0.0.1 -P3306 < all.sql

接下来会提示你输入mysql数据库的root密码,输入完成后,如果当前数据库不大,很快就能导入完成。
(2)给从数据库设置复制的主数据库信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值):

# mysql -uroot -proot   
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.152',MASTER_USER='lyz',MASTER_PASSWORD='lyz',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=329;   
# 然后启动从数据库的复制线程:   
mysql> START slave;   
# 接着查询数据库的slave状态:   
mysql>  SHOW slave STATUS \G   
# 如果下面两个参数都是Yes,则说明主从配置成功!   
Slave_IO_Running: Yes   
Slave_SQL_Running: Yes

(3)至此,MySQL主从复制配置结束。接下来你可以在主数据库上创建数据库、表、插入数据,然后看从数据库是否同步了这些操作


四、主从同步简单管理

1. 停止MYSQL同步

STOP SLAVE IO_THREAD;     #停止IO进程  
STOP SLAVE SQL_THREAD;    #停止SQL进程  
STOP SLAVE;               #停止IO和SQL进程

2. 启动MYSQL同步

START SLAVE IO_THREAD;    #启动IO进程  
START SLAVE SQL_THREAD;   #启动SQL进程  
START SLAVE;              #启动IO和SQL进程

3. 重置MYSQL同步

RESET SLAVE;  
清除主从同步参数,它会删除master.info和relay-log.info文件,以及所有的中继日志,并启动一个新的中继日志。  
适用重新再次配置一次从库的情况。

4. 查看MYSQL同步状

SHOW SLAVE STATUS;

5. 临时跳过MYSQL同步错误

确保数据一致的情况下临时的跳过这个错误操作如下,有可能要多次。  
STOP SLAVE;  
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  
START SLAVE;
# vi /etc/my.cnf  
[mysqld]  
#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误  
#slave-skip-errors=all            #跳过所有错误  
这里出现一次1146报错,是因为配置binlog-do-db过滤
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05mysql5.7.14解压版安装的实例方法
  • 2018-12-05select into 和 insert into select 两种表复制语句
  • 2018-12-05MySQL 事务实例教程
  • 2018-12-05MysqlDoor函数创建浅析
  • 2018-12-05mysql 协议的删除DB命令包及解析
  • 2018-12-05MySQL下将一个表的数据插入到另外一个表的实现语句
  • 2017-05-11从创建数据库到存储过程与用户自定义函数的小感
  • 2018-12-05如何写一个属于自己的数据库封装(4)
  • 2018-12-05分布式锁的多种实现方式
  • 2017-05-11mysql基础:mysqld_safe 启动执行流程详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL清空缓存的命令
    • Mysql服务器的启动与停止(二)
    • 深入理解MySQL进阶漂流记(二)
    • MySQL SQL语句优化的10条建议
    • MySQL 事务
    • MySQL 分表优化试验代码
    • mysql输入查询及退出查询命令
    • 总结关于特定类型查询注意点
    • MySQL Innodb表导致死锁日志情况分析与归纳
    • MySQL 有输入输出参数的存储过程实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有