您好,欢迎访问一九零五行业门户网

Mysql主从复制及读写分离的实现

mysql5.6基于gtid的主从复制及使用amoeba配置读写分离一、简介二、mysql主从配置三、读写分离配置一、amoeba简介amoeba(变形虫)项目,该开源框架于2008年开始发布
mysql 5.6 基于gtid的主从复制及使用amoeba配置读写分离
一、简介
二、mysql主从配置
三、读写分离配置
一、amoeba简介
amoeba(变形虫)项目,该开源框架于2008年开始发布一款 amoeba for mysql软件。这个软件致力于mysql的分布式数据库前端代理层,它主要在应用层访问mysql的 时候充当sql路由功能,专注于分布式数据库代理层(database proxy)开发。座落与 client、db server(s)之间,对客户端透明。具有负载均衡、高可用性、sql 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前amoeba已在很多企业的生产线上面使用
amoeba优缺点
优点:
1、降低费用,简单易用
2、提高系统整体可用性
3、易于扩展处理能力与系统规模
4、可以直接实现读写分离及负载均衡效果,而不用修改代码
缺点:
1、不支持事务与存储过程
2、暂不支持分库分表,amoeba目前只做到分数据库实例
3、不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)
mysql gtid
mysql 5.6的新特性之一,加入了全局事务性id(gtid:global transactions identifier)来强化数据库的主备一致性,故障恢复,以及容错能力;也使得复制功能的配置、监控及管理变得更加易于实现,且更加健壮
二、mysql主从配置
1、环境介绍:
两台mysql数据库实现主从配置,172.16.14.2主机为master;172.16.14.3为slave
2、在master服务器上安装并配置mysql
######安装mysql并加入到系统服务[root@master ~]# tar xf mysql-5.6.13-linux-glibc2.5-x86_64.tar.gz -c /usr/local/[root@master ~]# cd /usr/local/[root@master local]# ln -s mysql-5.6.13-linux-glibc2.5-x86_64 mysql[root@master local]# cd mysql[root@master mysql]# cp support-files/mysql.server /etc/init.d/mysqld[root@master mysql]# chmod +x /etc/init.d/mysqld[root@master mysql]# chkconfig --add mysqld[root@master mysql]# echo path=/usr/local/mysql/bin:$path >> /etc/profile[root@master mysql]# . /etc/profile----------------------------------------------------------------------######提供主配置文件[root@master mysql]# vim /etc/my.cnf[client]#password= your_passwordport= 3306socket= /tmp/mysql.sock[mysqld]port= 3306socket= /tmp/mysql.sockskip-external-lockingkey_buffer_size = 256mmax_allowed_packet = 1mtable_open_cache = 256sort_buffer_size = 1mread_buffer_size = 1mread_rnd_buffer_size = 4mmyisam_sort_buffer_size = 64mthread_cache_size = 8query_cache_size= 16mthread_concurrency = 8binlog-format=rowlog-slave-updates=truegtid-mode=onenforce-gtid-consistency=truemaster-info-repository=tablerelay-log-info-repository=tablesync-master-info=1slave-parallel-workers=2binlog-checksum=crc32master-verify-checksum=1slave-sql-verify-checksum=1binlog-rows-query-log_events=1report-port=3306datadir=/datareport-host=master.allen.comlog-bin=mysql-binserver-id= 10[mysqldump]quickmax_allowed_packet = 16m[mysql]no-auto-rehash[myisamchk]key_buffer_size = 128msort_buffer_size = 128mread_buffer = 2mwrite_buffer = 2m[mysqlhotcopy]interactive-timeout----------------------------------------------------------------------######初始化mysql[root@master mysql]# useradd -r mysql[root@master mysql]# mkdir /data[root@master mysql]# chown -r mysql.mysql /data[root@master mysql]# chown -r root.mysql /usr/local/mysql/*[root@master mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/[root@master ~]# service mysqld start3、在slave服务器上安装mysql与在master服务器上安装方法相同,这里不在介绍,,而在slave服务器上安装mysql有两个参数与master服务器不同;如下
server-id=11report-host=slave.allen.com[root@slave ~]# service mysqld start4、在master服务器上为slave创建复制用户并测试连接
[root@master ~]# mysqlmysql> grant replication slave,replication client on *.* to 'slave'@'172.16.%.%' identified by 'passwd';mysql> flush privileges;------------------------------------------------------------------------######测试连接[root@slave ~]# mysql -uslave -ppasswd -h 172.16.14.25、启动从节点的复制线程
[root@slave ~]# mysqlmysql> change master to master_host='172.16.14.2',master_user='slave',master_password='passwd',master_auto_position=1;mysql> start slave;mysql> show slave status\g;*************************** 1. row ***************************slave_io_state: waiting for master to send eventmaster_host: 172.16.14.2master_user: slavemaster_port: 3306connect_retry: 60master_log_file: mysql-bin.000005read_master_log_pos: 191relay_log_file: slave-relay-bin.000003relay_log_pos: 401relay_master_log_file: mysql-bin.000005slave_io_running: yes#主要看这两项为“yes”说明成功slave_sql_running: yes6、在master服务器创建数据库查看slave服务器是否更新
[root@master ~]# mysql -e 'create database allen;'------------------------------------------------------------------------[root@slave ~]# mysql -e 'show databases;'+--------------------+| database|+--------------------+| information_schema || allen|| mysql|| performance_schema || test|+--------------------+######由上可见,新创建的allen数据库已成功同步至此mysql 5.6 基于gtid的复制已经完成,下面将介绍如何基于mysql的主从复制架构做读写分离
三、读写分离配置
1、基于前面做的mysql主从架构,然后在前端加一台服务器,用于实现mysql的读写分离,ip地址为:172.16.14.1;由于amoeba是java程序所研发,所以需要先安装jdk程序
其它类似信息

推荐信息