搭建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. php 通过curl获取远程数据,返回的是一个数组型的字符串,高手帮忙如何将这个数组类型的字符串变成数组。

    如 Array([0] => Array([0] => Array([kd_status] => 已签收[kd_time] => 2014-04-30 18:59:43 [b] ...

  2. SQL语句-INSERT语句

    Insert语句 Insert语句三种写法: mysql> desc students; +-------+-------------+------+-----+---------+------ ...

  3. JQuery 纵向二级菜单与对齐方式

    1.效果: 2.代码: style部分: <style type="text/css"> /* ul{margin: 0; padding: 0;}*/ ul{list ...

  4. API函数详解:API大全总目录(按字母排列)

    API函数详解 http://www.feiesoft.com/api/api.html

  5. 在IAR下移植CC2650 contiki工程

    与Instant Contiki相比,在Windows的IAR下开发可以在线仿真,下载也更方便,因此我想把BLEach的工程移植到IAR下.弄了好几天总算编译并且下载成功了,参考了[这篇TI的wiki ...

  6. NoSQL在大数据中的应用

    一.序言 NoSQL是Not Only SQL的缩写,而不是Not SQL,指的是非关系型的数据库,它不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准.ACID属性.表结构等等.相比传统数据库 ...

  7. HTML5中的Web Notification桌面通知

    大家在做一些浏览器端的聊天功能的时候,或者在一些网站跟在线客服咨询的时候,会看到一些消息通知的提示,常见的有浏览器标签页的闪烁和屏幕右侧的消息通知.本篇博客就在这里简单的介绍一下如何实现这样的功能. ...

  8. Oracle RAC基本概念

    原文链接:http://tech.it168.com/a2012/0814/1384/000001384756_all.shtml 不同的集群产品都有自己的特点,RAC的特点包括如下几点: ·双机并行 ...

  9. java HotSpot 内存管理白皮书

    原文见:http://www.open-open.com/lib/view/open1381034220705.html.查阅资料后,对原文做了补充. 文中关于JVM的介绍基于JDK1.6的Hotsp ...

  10. 夏令营讲课内容整理 Day 3.

    本日主要内容是树与图.   1.树 树的性质 树的遍历 树的LCA 树上前缀和   树的基本性质: 对于一棵有n个节点的树,必定有n-1条边.任意两个点之间的路径是唯一确定的.   回到题目上,如果题 ...