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脚本. 例子 ...
随机推荐
- matlab文件读写处理实例(三)——读取文件特定行
(1) 读取文件特定行 CODE: ; ; if nline==line fprintf(fidout,'%s\n',tline); data ...
- 探索ArrayList自动改变size真相
探索ArrayList自动改变size真相 ArrayList的列表对象实质上是存储在一个引用型数组里的,有人认为该数组有“自动增长机制”可以自动改变size大小.正式地说,该数组是无法改变 大小的, ...
- Python推荐算法学习1
1.闵可夫斯基距离 闵可夫斯基距离可以概括曼哈顿距离与欧几里得距离. 其中r越大,单个维度差值大小会对整体产生更大的影响.这个很好理解,假设当r=2时一个正方形对角线长度,永远是r=3时正方体对角线 ...
- Tomcat修改端口号(7.0 version)
目的:有时端口号可能其他服务占用,就需要修改一下Tomcat的端口号,避免冲突. 自我总结,有什么需要改正的地方,请大家补充,感激不尽! 找到Tomcat的的配置文件server.xml 路径:%to ...
- C++——函数的调用
调用前先声明函数: >>若函数定义在调用点之前,则无需另外声明 >>若函数定义在调用点之后,则需要在调用函数前按如下形式声明函数原型(原型声明) 类型标识符 被调用函数名( ...
- 基于线程池的线程管理(BlockingQueue生产者消费者方式)实例
1.线程池管理类: public class ThreadPoolManager { private static ThreadPoolManager instance = new ThreadPoo ...
- 关于Kafka 的 consumer 消费者处理的一些见解
前言 在上一篇 Kafka使用Java实现数据的生产和消费demo 中介绍如何简单的使用kafka进行数据传输.本篇则重点介绍kafka中的 consumer 消费者的讲解. 应用场景 在上一篇kaf ...
- 安装memcache及php的memcached模块
下载链接: http://pan.baidu.com/s/1o6MA8lG http://pan.baidu.com/s/1qWO8tMs http://pan.baidu.com/s/1c0iZu1 ...
- require和require_once的区别
require 的使用方法如 require("./inc.php"); .通常放在 PHP 程式的最前面,PHP 程式在执行前,就会先读入 require 所指定引入的档案,使它 ...
- 济南清北学堂游记 Day 7.
完结撒花? 最后的模拟赛与讲题.大家似乎仍然乐在其中,虽然看评测结果,仍然是满地红. 其实到了最后已经是没有多少可写的了..... 一个精彩的地方是晚上填表的时候,群里炸锅了已经.到处都在刷CCL老师 ...