Mysql5.6.24的主从复制及用atlas实现读写分离_第1页
Mysql5.6.24的主从复制及用atlas实现读写分离_第2页
Mysql5.6.24的主从复制及用atlas实现读写分离_第3页
Mysql5.6.24的主从复制及用atlas实现读写分离_第4页
Mysql5.6.24的主从复制及用atlas实现读写分离_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Mysql5.6.24 的主从复制及用atlas实现读写分离在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的。譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止。使用mysql主从复制的好处有:1、采用主从服务器这种架构,稳定性得以提升。如果主服务器发生故障,我们可以使用从服务器来提供服务。2、在主从服务器上分开处理用户的请求,可以提升数据处理效率。3、将主服务器上的数据复制到从服务器上,保护数据免受意外的损失。环境描述:新企业要搭建架构为主从复制的mysql数据库。主服务器(mysql-master):IP地址:192.168.1.180,mysql已安装,

2、没有用户数据。从服务器(mysql-slave):IP地址:192.168.1.181,mysql已安装,没有用户数据。主从服务器均可正常提供服务。主从复制配置如下:在主服务器上操作:1)、确保/etc/f中有如下参数,没有的话需手工添加,并重启mysql服务。mysqldlog-bin=/usr/local/mysql/data/mysql/mysql-bin 启动二进制文件server-id=1 服务器ID2)、登录mysql,在mysql中添加一个repl的账号,并授权给从服务器。rootlocalhost # mysql -uroot p123456 登录mysqlmysql>

3、grant replication slave on *.* to 'repl''192.168.1.181' identified by '123' 创建repl用户,并授权给192.168.1.181使用。3)、查询主数据库状态,并记下FILE及Position的值,这个在后面配置从服务器的时候要用到。mysql> show master status; 在从服务器上操作:1)、确保/etc/f中有log-bin=mysql-bin和server-id=1参数,并把server-id=1修改为server-id=10。修改之后如下所示:

4、mysqldlog-bin=/usr/local/mysql/data/mysql/mysql-bin 启动二进制文件server-id=10 服务器ID2) 、重启mysql服务。3)、登录mysql,执行如下语句rootlocalhost # mysql -uroot p123456mysql> change master to master_host='192.168.1.180',master_user='repl',master_password='123',master_log_file='mysql-bin.00000

5、1',master_log_pos=330;4)、启动slave同步。mysql> start slave;5)、检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。mysql> show slave statusG验证配置是否正常,mysql主从能否正常复制。在主数据库上新建一个库,并且在库中写一个表和一些数据。rootlocalhost # mysql -uroot p123456mysql> create database mysqltest;mysql> use mysqltest;

6、mysql> create table user(id int(5),name char(10);mysql> insert into user values (00001,'zhangsan');在从数据库中验证一下,是否正常复制到数据。rootlocalhost # mysql -uroot p123456mysql> show databases;mysql> select * from mysqltest.user;从上图中的结果,我们可以看到mysql主从复制已经在起作用了,我们在主数据库中写入的数据已经复制到我们的从数据库中了。环境如下:单台

7、数据库存有数据,要升级为主从复制的架构。主数据库:mysql-master:IP192.168.1.180,数据库正常提供服务,有数据。从数据库:mysql-slave:IP192.168.1.181,数据库正常提供服务,无数据。升级大致步骤如下:1、修改主数据库配置文件,开启主从复制必要的功能。2、在主数据库中创建一个账号并授权给从数据库使用。3、导出主数据库中的数据。4、修改从数据库配置文件,开启主从复制必要的功能。5、把刚才主数据库中导出的数据导入到从数据库。6、在从数据库中配置连接主数据库要用到的账户、密码等。7、启动主从复制功能,并检查是否正常复制。开始升级:在主数据库上操作:1)、

8、确保/etc/f中有如下参数,没有的话需手工添加,并重启mysql服务。mysqldlog-bin=/usr/local/mysql/data/mysql/mysql-bin 启动二进制文件server-id=1 服务器ID2)、登录mysql,在mysql中添加一个repl的账号,并授权给从服务器。rootlocalhost # mysql -uroot p123456 登录mysqlmysql> grant replication slave on *.* to 'repl''192.168.1.181' identified by '123&

9、#39; 创建repl用户,并授权给192.168.1.181使用。3)、查看已有的数据库有哪些;mysql> show databases;4)、进行锁表操作,不让数据进行写入动作,这么做是为了防止从数据库的原始数据和主数据库的原始数据不一致。mysql> flush tables with read lock;5)、查询主数据库状态,并记下FILE及Position的值,这个在后面配置从服务器的时候要用到。mysql> show master status;6)、切换一个终端,使用mysqldump命令将刚才查询到的两个库导出来。mysql> mysqldump u

10、root p123456 mysqltest > mysqltest.sqlmysql> mysqldump uroot p123456 test1234 > test1234.sql7)、将导出来的库文件传送到从数据库的/root目录下。rootlocalhost #scp mysqltest.sql test1234.sql root192.168.1.181:/root/这中间需要输入一次验证口令。见下图8)、切换回之前的终端,进行表解锁操作。mysql> unlock tables;主数据库服务器上的操作告一段落。在从数据库上操作:1)、确保/e

11、tc/f中有log-bin=mysql-bin和server-id=1参数,并把server-id=1修改为server-id=10。修改之后如下所示:mysqldlog-bin=/usr/local/mysql/data/mysql/mysql-bin 启动二进制文件server-id=10 服务器ID2)、重启mysql服务。3)、登录数据库,确认要同步的库名是否存在。rootlocalhost # mysql -uroot p123456mysql> show databases;4)、创建名为mysqltest和test1234的库。mysql> create databa

12、se mysqltest;mysql> create database test1234;5)、切换一个终端,将传过来的两个数据文件分别导入对应的数据库下。rootlocalhost # mysql -uroot p123456 mysqltest < mysqltest.sqlrootlocalhost # mysql -uroot p123456 test1234 &lt; test1234.sql 6)、切换回之前的终端,执行如下语句mysql> change master to master_host='192.168.1.180',maste

13、r_user='repl',master_password='123',master_log_file='mysql-bin.000003',master_log_pos=1650;7)、启动主从复制功能。mysql> start slave;8)、检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。mysql> show slave statusG验证主从是否正常配置:在主数据库上插入数据:mysql> show databases;mysql> s

14、how tables;mysql> use mysqltest;mysql> select * from user;mysql> insert into user values (4,'ergou');mysql> insert into user values (5,'sanwazi');在从数据库上查看是否正常同步:mysql> show databases;mysql> use mysqltest;mysql> select * from user;上图可以看出,主从之间已经可以正常复制了。Atlas 安装和配置:

15、Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平 台,每天承载的读写请求数达几十亿条。主要功能:* 读写分离* 从库负载均衡* IP过滤* SQL语句黑白名单* 自动分表一、环境OS :CentOS-6.5 x86_64Atlas IP : 192.168.1.182MySQL Master IP : 192.168.1.180MySQL S

16、lave IP : 192.168.1.181二、MySQL授权MySQL主从已经配置好之后,主从对Atlas进行授权mysql> grant all on *.* to atlas'192.168.1.182' identified by '123456'3、 Atlas安装#rpm -ivh Atlas-2.2.1.el6.x86_64.rpmAtlas安装后的文件路径/usr/local/mysql-proxy/4、 Atlas配置 加密MySQL用户密码,获取的加密串填写到配置文件的pwds参数中。# /usr/local/mysql-proxy/

17、bin/encrypt 123456/iZxz+0GRoA=vim /usr/local/mysql_proxy/conf/test.confmysql-proxy#带#号的为非必需的配置项目#管理接口的用户名admin-username = user#管理接口的密码admin-password = pwd#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔proxy-backend-addresses = 192.168.1.180:3306#Atlas后端连接的MySQL从库的IP和端口,后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔pro

18、xy-read-only-backend-addresses = 192.168.1.181:33061 #用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示例,将其替换为你的MySQL的用户名和加密密码!pwds = atlas:/iZxz+0GRoA=#设置Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。daemon = true#设置Atlas的运行方式,设为true时Atlas会启动两个进程,

19、一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。keepalive = true#工作线程数,对Atlas的性能有很大影响,可根据情况适当设置event-threads = 8#日志级别,分为message、warning、critical、error、debug五个级别log-level = message#日志存放的路径log-path = /usr/local/mysql-proxy/log#SQL日志的开关,

20、可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘,默认为OFF#sql-log = OFF#慢日志输出设置。当设置了该参数时,则日志只输出执行时间超过sql-log-slow(单位:ms)的日志记录。不设置该参数则输出全部日志。#sql-log-slow = 10#实例名称,用于同一台机器上多个Atlas实例间的区分#instance = test#Atlas监听的工作接口IP和端口proxy-address = 0.0.0.0:1234#Atlas监听的管理接口IP和端口admin-address =

21、 0.0.0.0:2345#分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项#tables = person.mt.id.3#默认字符集,设置该项后客户端不再需要执行SET NAMES语句#charset = utf8#允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接#client-ips = 127.0.0.1, 192.168.1#Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-i

22、ps则此项必须设置,否则可以不设置#lvs-ips = 192.168.1.1启动/usr/local/mysql-proxy/bin/mysql-proxyd test start关闭/usr/local/mysql-proxy/bin/mysql-proxyd test stop五、Atlas参数备注instance参数同一台机器上的多个Atlas实例,使用不同的端口,对应不同数据库,使用各自的配置文件默认的黑白名单不带where的delete会屏蔽,"sleep"会屏蔽备注:1.03版本已经支持setautocommit语句,另外对于python来说需要在连接上后执行一句conn.autocommit(True)pwds参数配置MySQL用户名和对应的加密过的MySQL密码,密码使用/usr/local/mysql-proxy/bin/encrypt程序进行加密,用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论