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脚本. 例子 ...
随机推荐
- 布衣之路(一):VMware虚拟机+CentOS系统安装
前言:布衣博主乃苦逼的Java程序猿一枚,虽然工作中不会涉及系统运维,但是开发的项目总还是要部署到服务器做一些负载均衡.系统兼容性测试.系统集成等等骚操作,而这些测试性的操作不可能直接SSH远程运维的 ...
- easyui_datagrid 行内使用comobox的编码实现
easyui datagrid组件的列属性中有一个editor属性,官方介绍如下: 所以,我们可以通过编码实现datagrid行内插入comobox的方式来实现某些场合的需要,具体编码实现如下: // ...
- 利用rsync+inotify实现数据实时同步脚本文件
将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133. ...
- Getting the pixel coordinates of text or ticks in matplotlib
The exact pixel coordinates of title, labels, legends or ticks are important information for the tra ...
- Java生产者消费者
简单的生产者.消费者,一个数据缓冲区,一个或者多个生产者把数据放入缓冲区.一个或者多个消费者将数据从缓冲区取走.该缓冲区是一个数据共享,必须进行同步处理,如果缓冲区是满的,生产者将不能放数据,同理如果 ...
- PHP7 Xdebug配置方式
方式一 到http://xdebug.org/files/php_xdebug-2.4.1-7.0-vc14.dll下载最新版的XDebug文件. 下载之后放到PHP7根目录下的ext子目录下. PH ...
- nodejs和npm的安装
下载nodejs的压缩包 网址:https://nodejs.org/en/ 下载以tar.xz结尾的包例如:node-v8.9.4-linux-x64.tar.xz 上传包到制定的目录 可以用lrz ...
- OpenCV亚像素角点cornerSubPixel()源代码分析
上一篇博客中讲到了goodFeatureToTrack()这个API函数能够获取图像中的强角点.但是获取的角点坐标是整数,但是通常情况下,角点的真实位置并不一定在整数像素位置,因此为了获取更为精确的角 ...
- Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组
运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 % 取模(余数) // 取相除的整数部分 / (5/2=2.5) 比较运算符 == 等于 ! ...
- B站标题/子标题/url爬取示例(requests+re)
#coding:utf-8 __author__ = "zhoumi" 3 import requests import re import urllib ''' 本文档目的在于获 ...