mysql 主从同步 mysql代理服务器
搭建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代理服务器的更多相关文章
- mysql主从同步mysql slave_io_running:no的解决方案
在主从同步的时候出现slave_io_running:no 问题,于是查看mysqld.log日志,发现时1042错误 解决方案: 编辑/etc/my.cnf,在:[mysqld]内添加一行:skip ...
- Linux下MySQL主从同步配置
Centos6.5 MySQL主从同步 MySQL版本5.6.25 主服务器:centos6.5 IP:192.168.1.101 从服务器:centos6.5 IP:192.168.1.102 一. ...
- mysql主从同步+mycat读写分离+.NET程序连接mycat代理
背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...
- zabbix3.0.4监控mysql主从同步
zabbix3.0.4监控mysql主从同步 1.监控mysql主从同步原理: 执行一个命令 mysql -u zabbix -pzabbix -e 'show slave status\G' 我们在 ...
- MySQL主从同步几个文件
MySQL主从同步: M锁表 M导出S导入 M解锁 M建同步帐号 S获取点位:产生master.info S开启同步 3306: mysql-bin.0000x mysql-bin.index ...
- 监控mysql主从同步状态脚本
监控mysql主从同步状态脚本 示例一: cat check_mysql_health #!/bin/sh slave_is=($(mysql -S /tmp/mysql3307.sock -uroo ...
- Mysql主从同步(复制)
目录: mysql主从同步定义 主从同步机制 配置主从同步 配置主服务器 配置从服务器 使用主从同步来备份 使用mysqldump来备份 备份原始文件 ...
- MySQL主从同步原理 部署【转】
一.主从的作用:1.可以当做一种备份方式2.用来实现读写分离,缓解一个数据库的压力二.MySQL主从备份原理master 上提供binlog ,slave 通过 I/O线程从 master拿取 bin ...
- shell脚本修复MySQL主从同步
发布:thebaby 来源:net [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改mysql主从同步的shell脚本. 例子 ...
随机推荐
- JDK安装及Tomcat安装
JDK安装及Tomcat安装 JDK 解压JDK到常用盘符 D为例 Tomcat安装 将tomcat.zip解压到常用的根目录下,我这里以D盘为例.这样就算安装好了! 接下来开始配置环境变量,打开环境 ...
- centos7+ansible自动化工具使用
一.基础介绍 ========================================================================================== 1. ...
- iOS-生成二维码图片【附中间带有小图标二维码】(QRCode)
生成二维码图片也是项目中常用到的,二维码的扫描Git上有很多好用的,这里主要说下二维码的生成 1.普通二维码 方法 /** 生成二维码 QRStering:字符串 imageFloat:二维码图片大小 ...
- ABP官方文档翻译 6.7 CSRF/XSRF保护
CSRF/XSRF保护 介绍 HTTP动词 非浏览器客户端 ASP.NET MVC 特征 集成 布局视图 配置 ASP.NET Web API 特征 集成 集成到ASP.NET MVC客户端 集成到其 ...
- win7 MySQL Connector/Net 安装卸载问题
问题1:卸载MySQL Connector Net 6.9.9 卸载程序无法卸载 方法:注册表搜索 MySQL Connector Net 6.9.9 全部删除 ******************* ...
- rsync推送和拉取
rsync格式: # 拷贝本地文件.当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式.如:rsync -a /data /backup rsync [OP ...
- BZOJ 3544: [ONTAK2010]Creative Accounting [set]
给定一个长度为N的数组a和M,求一个区间[l,r],使得$(\sum_{i=l}^{r}{a_i}) mod M$的值最大,求出这个值,注意这里的mod是数学上的mod 这道题真好,题面连LaTeX都 ...
- SpringMVC源码之参数解析绑定原理
摘要 本文从源码层面简单讲解SpringMVC的参数绑定原理 SpringMVC参数绑定相关组件的初始化过程 在理解初始化之前,先来认识一个接口 HandlerMethodArgumentResolv ...
- Linux设置系统运行模式
Linux系统有7个运行级别(runlevel): 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级 ...
- 对.Net Core结合Docker和Jexus的实践
本文基于上次尝试之后的进一步尝试,加入Docker容器.编写Dockerfile,并且jexus结合Docker的使用,总结下自己的个人感想. 一.环境介绍 当前的场景有两种方式将Demo实现运行,一 ...