搭建mysql主从同步(实现数据自动备份)
实例:
把主机192.168.4.100的数据库配置为主机192.168.4.99的从数据库

主数据库服务器配置
修改配置文件:
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
log-bin=hydra80(启用binlog日志,从服务器主机位)
server_id=80(从服务器主机位)
[root@mysql ~]# /etc/init.d/mysql restart
用户授权:
mysql> grant replication slave on *.* to hydra@"192.168.4.100" identified by "Anonymous";

从数据库服务器配置(从库上一定要有主库上的库)
测试主数据库授权:
[root@stu ~]# mysql -h192.168.4.99 -uhydra -pAnonymous
修改配置文件:
[root@stu ~]# vim /etc/my.cnf
[mysqld]
log-bin=mysql99(主服务器主机位)
server_id=99(主服务器主机位)
[root@stu ~]# /etc/init.d/mysqld restart

把192.168.4.100配置为192.168.4.99的从数据库服务器
mysql> show slave status;(查看本机是不是从服务器)
mysql> show master status;(查看数据库的binlog日志文件名)
配置从数据库服务器格式:
change master to master_host="主数据库ip",master_user"授权用户",master_password="授权密码",master_log_file="主数据库的binlog日志名",master_log_pos=Position记录的数字
测试:
mysql>change master to master_host="192.168.4.99",master_user="hydra",master_password="Anonymous",master_log_file="hydra80.000001",master_log_pos=120;
mysql> start slave;
Slave_IO_Running: Yes(两个yes才可以同步数据)
Slave_SQL_Running: Yes

在主数据库创建数据测试
mysql> create database hydra01;(主数据库)
查看从数据库是否有数据库:
mysql> show databases;(从数据库)
hydra01

————————————————————————————————————————————————————————————————————————————————————

主从同步过程
Slave_IO_Running: io线程负责把主数据库服务器binlog日志里的sql命令同步到本机中继日志里
IO出错的原因:iptables,selinux grat 指定的binlog日志信息错误
报错信息Last_IO_Error:查看报错信息,排错

Slave_SQL_Running: sql线程负责执行本机中继日志里的sql命令,把数据写入本机的库里
SQL线程出错的原因:执行sql命令时,使用的库,表在本机不存在
报错信息Last_SQL_Error:查看报错信息,排错

数据库事务日志
[root@stu ~]# ls /var/lib/mysql/
stu-relay-bin.000001(中继日志)
stu-relay-bin.index(中继日志的索引文件)
relay-log.info(中继日志信息)
master.info(连接主数据库的信息)

让从库暂时不同步主数据库服务器的数据:
mysql> stop slave;

把从数据库服务器恢复为一台独立的数据库服务器:
[root@stu ~]# rm -rf /var/lib/mysql/master.info relay-log.info stu-relay-bin.*
[root@stu ~]# /etc/init.d/mysql restart

主从配置的常用选项:
[root@mysql ~]# vim /etc/my.cnf(在主数据库上配置,限制的是所有的从数据库)
binglog-do-db=库名(允许从数据库同步的库)
binlog-ignore-db=库名(允许从数据库同步的库)
从配置参数:
[root@stu ~]# vim /etc/my.cnf
log-slave-updates(允许级联复制)
replica-do-db=库名(只同步主数据库的库名)
replica-ignore-db=库名(不同步主数据库的库名)

主从同步结构模式
一主一从:(工作用的多)
一主多从:(工作用的多)
授权多个用户
主主结构:
相互授权,相互测试
主从从:
中间的从数据库服务器上sql线程执行本机中继日志文件里的sql命令不会被记录到本机的binlog日志文件里
要实现最后一从数据库同步主数据库的数据,在配置文件加入允许级联复制
[root@stu ~]# vim /etc/my.cnf
log-slave-updates(允许级联复制)

搭建mysql代理服务器(实现数据访问时的读写分离,减轻单台服务器的压力)
mysql代理服务+主从同步
在主机(192.168.4.101)daili上部署mysql代理服务器,把接受到的读请求给192.168.4.99服务器,
把接受到的写请求给192.168.4.100服务器

代理服务器配置:
安装提供mysql代理服务的软件包mysql-proxy-tar.gz
[root@daili ~]# tar -xf mysql-proxy-tar.gz(解压缩)
[root@daili ~]# mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/ /usr/local/mysqlproxy(移动并改名)
[root@daili mysqlproxy]# ls
bin include lib libexec licenses share
[root@daili mysqlproxy]# chmod +x /usr/local/mysqlproxy/share/doc/mysql-proxy/rw-splitting.lua(给脚本加执行权限)
[root@daili mysqlproxy]# rpm -q lua(脚本死lua语言写的,查看有没有解释lua语言的包)
lua-5.1.4-4.1.el6.x86_64
[root@daili mysqlproxy]# netstat -utnalp | grep :3306(它监听的是3306端口,查看端口有没有被占用)
[root@daili ~]# /usr/local/mysqlproxy/bin/mysql-proxy -P 192.168.4.101:3306 -r 192.168.4.99:3306 -b 192.168.4.100:3306 -s /usr/local/mysqlproxy/share/doc/mysql-proxy/rw-splitting.lua &
起服务,-P 代理服务器地址:端口 -r读类型ip地址:端口 -b写类型地址:端口 -s区分访问类型的脚本 &后台运行
[root@daili ~]# pkillmysql-proxy(结束进程)
在两台数据库服务器做用户授权:
mysql> grant all on *.* to hydra@"%" identified by "Anonymous";
客户端测试访问:
mysql -h代理服务器地址 -u用户名 -p密码(并发连接数大于4才区分读写分离)
[root@daili ~]# mysql -h192.168.4.101 -uhydra -pAnonymous

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

搭建mysql主从同步(实现数据自动备份)
实例:
把主机192.168.4.100的数据库配置为主机192.168.4.99的从数据库

主数据库服务器配置
修改配置文件:
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
log-bin=hydra80(启用binlog日志,从服务器主机位)
server_id=80(从服务器主机位)
[root@mysql ~]# /etc/init.d/mysql restart
用户授权:
mysql> grant replication slave on *.* to hydra@"192.168.4.100" identified by "Anonymous";

从数据库服务器配置(从库上一定要有主库上的库)
测试主数据库授权:
[root@stu ~]# mysql -h192.168.4.99 -uhydra -pAnonymous
修改配置文件:
[root@stu ~]# vim /etc/my.cnf
[mysqld]
log-bin=mysql99(主服务器主机位)
server_id=99(主服务器主机位)
[root@stu ~]# /etc/init.d/mysqld restart

把192.168.4.100配置为192.168.4.99的从数据库服务器
mysql> show slave status;(查看本机是不是从服务器)
mysql> show master status;(查看数据库的binlog日志文件名)
配置从数据库服务器格式:
change master to master_host="主数据库ip",master_user"授权用户",master_password="授权密码",master_log_file="主数据库的binlog日志名",master_log_pos=Position记录的数字
测试:
mysql>change master to master_host="192.168.4.99",master_user="hydra",master_password="Anonymous",master_log_file="hydra80.000001",master_log_pos=120;
mysql> start slave;
Slave_IO_Running: Yes(两个yes才可以同步数据)
Slave_SQL_Running: Yes

在主数据库创建数据测试
mysql> create database hydra01;(主数据库)
查看从数据库是否有数据库:
mysql> show databases;(从数据库)
hydra01

————————————————————————————————————————————————————————————————————————————————————

主从同步过程
Slave_IO_Running: io线程负责把主数据库服务器binlog日志里的sql命令同步到本机中继日志里
IO出错的原因:iptables,selinux grat 指定的binlog日志信息错误
报错信息Last_IO_Error:查看报错信息,排错

Slave_SQL_Running: sql线程负责执行本机中继日志里的sql命令,把数据写入本机的库里
SQL线程出错的原因:执行sql命令时,使用的库,表在本机不存在
报错信息Last_SQL_Error:查看报错信息,排错

数据库事务日志
[root@stu ~]# ls /var/lib/mysql/
stu-relay-bin.000001(中继日志)
stu-relay-bin.index(中继日志的索引文件)
relay-log.info(中继日志信息)
master.info(连接主数据库的信息)

让从库暂时不同步主数据库服务器的数据:
mysql> stop slave;

把从数据库服务器恢复为一台独立的数据库服务器:
[root@stu ~]# rm -rf /var/lib/mysql/master.info relay-log.info stu-relay-bin.*
[root@stu ~]# /etc/init.d/mysql restart

主从配置的常用选项:
[root@mysql ~]# vim /etc/my.cnf(在主数据库上配置,限制的是所有的从数据库)
binglog-do-db=库名(允许从数据库同步的库)
binlog-ignore-db=库名(允许从数据库同步的库)
从配置参数:
[root@stu ~]# vim /etc/my.cnf
log-slave-updates(允许级联复制)
replica-do-db=库名(只同步主数据库的库名)
replica-ignore-db=库名(不同步主数据库的库名)

主从同步结构模式
一主一从:(工作用的多)
一主多从:(工作用的多)
授权多个用户
主主结构:
相互授权,相互测试
主从从:
中间的从数据库服务器上sql线程执行本机中继日志文件里的sql命令不会被记录到本机的binlog日志文件里
要实现最后一从数据库同步主数据库的数据,在配置文件加入允许级联复制
[root@stu ~]# vim /etc/my.cnf
log-slave-updates(允许级联复制)

搭建mysql代理服务器(实现数据访问时的读写分离,减轻单台服务器的压力)
mysql代理服务+主从同步
在主机(192.168.4.101)daili上部署mysql代理服务器,把接受到的读请求给192.168.4.99服务器,
把接受到的写请求给192.168.4.100服务器

代理服务器配置:
安装提供mysql代理服务的软件包mysql-proxy-tar.gz
[root@daili ~]# tar -xf mysql-proxy-tar.gz(解压缩)
[root@daili ~]# mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/ /usr/local/mysqlproxy(移动并改名)
[root@daili mysqlproxy]# ls
bin include lib libexec licenses share
[root@daili mysqlproxy]# chmod +x /usr/local/mysqlproxy/share/doc/mysql-proxy/rw-splitting.lua(给脚本加执行权限)
[root@daili mysqlproxy]# rpm -q lua(脚本死lua语言写的,查看有没有解释lua语言的包)
lua-5.1.4-4.1.el6.x86_64
[root@daili mysqlproxy]# netstat -utnalp | grep :3306(它监听的是3306端口,查看端口有没有被占用)
[root@daili ~]# /usr/local/mysqlproxy/bin/mysql-proxy -P 192.168.4.101:3306 -r 192.168.4.99:3306 -b 192.168.4.100:3306 -s /usr/local/mysqlproxy/share/doc/mysql-proxy/rw-splitting.lua &
起服务,-P 代理服务器地址:端口 -r读类型ip地址:端口 -b写类型地址:端口 -s区分访问类型的脚本 &后台运行
[root@daili ~]# pkillmysql-proxy(结束进程)
在两台数据库服务器做用户授权:
mysql> grant all on *.* to hydra@"%" identified by "Anonymous";
客户端测试访问:
mysql -h代理服务器地址 -u用户名 -p密码(并发连接数大于4才区分读写分离)
[root@daili ~]# mysql -h192.168.4.101 -uhydra -pAnonymous

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

mysql 主从同步 mysql代理服务器的更多相关文章

  1. mysql主从同步mysql slave_io_running:no的解决方案

    在主从同步的时候出现slave_io_running:no 问题,于是查看mysqld.log日志,发现时1042错误 解决方案: 编辑/etc/my.cnf,在:[mysqld]内添加一行:skip ...

  2. Linux下MySQL主从同步配置

    Centos6.5 MySQL主从同步 MySQL版本5.6.25 主服务器:centos6.5 IP:192.168.1.101 从服务器:centos6.5 IP:192.168.1.102 一. ...

  3. mysql主从同步+mycat读写分离+.NET程序连接mycat代理

    背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...

  4. zabbix3.0.4监控mysql主从同步

    zabbix3.0.4监控mysql主从同步 1.监控mysql主从同步原理: 执行一个命令 mysql -u zabbix -pzabbix -e 'show slave status\G' 我们在 ...

  5. MySQL主从同步几个文件

    MySQL主从同步:   M锁表 M导出S导入 M解锁 M建同步帐号 S获取点位:产生master.info S开启同步   3306: mysql-bin.0000x mysql-bin.index ...

  6. 监控mysql主从同步状态脚本

    监控mysql主从同步状态脚本 示例一: cat check_mysql_health #!/bin/sh slave_is=($(mysql -S /tmp/mysql3307.sock -uroo ...

  7. Mysql主从同步(复制)

    目录: mysql主从同步定义      主从同步机制 配置主从同步      配置主服务器      配置从服务器 使用主从同步来备份      使用mysqldump来备份      备份原始文件 ...

  8. MySQL主从同步原理 部署【转】

    一.主从的作用:1.可以当做一种备份方式2.用来实现读写分离,缓解一个数据库的压力二.MySQL主从备份原理master 上提供binlog ,slave 通过 I/O线程从 master拿取 bin ...

  9. shell脚本修复MySQL主从同步

    发布:thebaby   来源:net     [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改mysql主从同步的shell脚本. 例子 ...

随机推荐

  1. DAY10-万物皆对象-2018-2-2

    许久没有写了,虽然每天都有在学,但是学的东西也少了,后面难度慢慢加大,学习速度也是变慢了.这是许多天积累下来的笔记,从第一次接触对象,到慢慢去了解,现在处于还待深入了解的状态.万物皆对象,那是不是说没 ...

  2. 最全 Linux 磁盘管理基础知识全汇总

    一.存储设备的挂载和卸载 存储设备的挂载和卸载常用操作命令:fdisk  -l.df.du.mount.umount. fdisk  -l 命令 1.作用 查看所有硬盘的分区信息,包括没有挂上的分区和 ...

  3. jquery中ajax跨域提交的时候会有2次请求

    我们平时在同域中请求页面什么的时候不会有这种情况,这种情况大多发生在移动端的跨域请求中发生的. 解决方法就是在服务端中加一层过滤HTTP请求的类型,把OPTION等不用的类型过滤掉.就是当请求为非 H ...

  4. Chrome浏览器调试Android的Webview

    chrome://inspect Android:4.4+ Chrome 30+ 首次使用需要FQ

  5. spring-boot 使用 main函数 无法启动的问题完美 解决方案。

    首先 是启动之后 ,直接回exit code  0,网址 里面输入localhost:8080显示站点未启动.网上查 了多种 方式 ,日志 也 打了,都没发现问题,最后到这篇文章里 找到了答案.但是这 ...

  6. Sonar 常用代码规则整理(二)

    摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ============ ...

  7. Round trip 流程图

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢!

  8. c# 颜色RGB到HSB互相转换

    /// <summary> /// 色相,饱和度,亮度转换成rgb值 /// </summary> /// <returns></returns> pu ...

  9. Cannot read property 'component' of undefined 即vue-router 0.x转化为2.x

    原文链接:http://blog.csdn.net/m0_37754657/article/details/71269988 由于vue版本为1.0,没有一些vue-router指令:因而需要vue- ...

  10. Django搭建博客网站(四)

    Django搭建博客网站(四) 最后一篇主要讲讲在后台文章编辑加入markdown,已经在文章详情页对markdown的解析. Django搭建博客网站(一) Django搭建博客网站(二) Djan ...