设为首页 收藏本站
查看: 842|回复: 0

[经验分享] centos 6.6 上mysql5.1主从同步 + 读写分离(mysql-proxy)基础实验

[复制链接]

尚未签到

发表于 2018-10-5 11:54:40 | 显示全部楼层 |阅读模式
  注意本次主从服务器上面均一yum安装mysql
  主从安装mysql
  shell> yum -y install mysql  mysql-server
  /etc/init.d/mysqld  start #初始化数据库,并启动数据库
  

主服务器上面  
添加以下配置
  
server-id=1
  
log-bin=mysql-bin #这个一定得设置,否则没有日志的话,从数据库上会报错
  

  [root@localhost etc]# service mysqld stop
  Stopping mysqld:  [  OK  ]
  [root@localhost etc]# service mysqld start
  Starting mysqld:  [  OK  ]
  [root@localhost etc]# service mysqld status
  mysqld (pid  3129) is running...
  

创建主从复制的帐号:
  
mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@'192.168.137.197'>  
Query OK, 0 rows affected (0.00 sec)
  
如果该命令无法执行,请检查是否用了圆角的’,需要用半角的',再不行,那就是mysql数据库安装不成功。
  

  
192.168.137.197是从库的地址
  
backup是需要同步的用户名(有些博客说是数据库名称,坑人不倦)
  
123456为远程同步密码
  

  
解锁表
  

  mysql> UNLOCK TABLES;
  Query OK, 0 rows affected (0.00 sec)
  

正确的状态如下:  
mysql> SHOW MASTER STATUS;
  

  +------------------+----------+--------------+------------------+
  | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000001 |      106 |              |                  |
  +------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
  

配置错误的情况,解决办法见文章最后的疑难解答。  
mysql> SHOW MASTER STATUS;
  
Empty set (0.00 sec)
  

  
修改从库配置:
  

  [root@localhost ~]# vi /etc/my.cnf
  添加语句
  log-bin = mysql-bin
  server_id = 2
  master-host = 192.168.137.33
  master-user = backup
  master-pass = 123456
  master-port = 3306
  master-connect-retry = 60
  

重启mysql /etc/init.d/mysqld restart   

  mysql> CHANGE MASTER TO
  MASTER_HOST='192.168.137.33',
  MASTER_USER='backup',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=106,
  MASTER_CONNECT_RETRY=10;
  Query OK, 0 rows affected (0.02 sec)
  测试主从是否配置成功。
  mysql> show slave status\G;
  

#注意在slave上面检测 show slave status时要保证 1、 Slave_IO_State 和Slave_IO_Running 都是有状态的才算salve进程启动,后续才能进行主从操作。切记!  

  
测试:新建表:
  
CREATE TABLE Persons
  
-> (

  
->>  
-> LastName varchar(255),
  
-> FirstName varchar(255),
  
-> Address varchar(255),
  
-> City varchar(255)
  
-> );
  

  mysql> desc Persons;
  

  +-----------+--------------+------+-----+---------+-------+
  | Field     | Type         | Null | Key | Default | Extra |
  +-----------+--------------+------+-----+---------+-------+

  |>  | LastName  | varchar(255) | YES  |     | NULL    |       |
  | FirstName | varchar(255) | YES  |     | NULL    |       |
  | Address   | varchar(255) | YES  |     | NULL    |       |
  | City      | varchar(255) | YES  |     | NULL    |       |
  +-----------+--------------+------+-----+---------+-------+
  5 rows in set (0.01 sec)
  从服务器上面mysql>desc Persons之后出现上述一样的结果则说明配置,主从同步成功。但是这个只是主服务器的文件变动之后同步到从服务器上面去了,从服务器的sql语句执行,没有影响到主服务器的变化,并没有实现真正意义上的主从同步。请知悉!
  

*使用mysql-proxy 进行数据库读写分离实验*  1、环境配置:
  master : 172.20.6.181
  slave : 172.20.6.84
  已经配置好主从复制

  mysql > grant all privileges on *.* to 'root'@'%'>  mysql > flush privileges;
  

  2.安装mysql-proxy ,在另外一台机器上安装
  

wget http://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz  
tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
  
mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit mysql-proxy
  

  
3.配置mysql-proxy
  
cd mysql-proxy
  
mkdir lua #创建脚本存放目录
  
mkdir logs #创建日志目录
  
mkdir conf #放置配置文件
  
cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件
  
cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本
  

  
4、执行脚本
  
/opt/mysql-proxy/bin/mysql-proxy \
  
--proxy-address=172.20.6.174:4040 \   #mysql-proxy安装部署的机器IP
  
--proxy-backend-addresses=172.20.6.181:3306 \  #在3306端口的服务器中配置可读可写
  
--proxy-read-only-backend-addresses=172.20.6.84:3306  \ #在3306端口的服务器中配置只读
  
--proxy-lua-script=/opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua \  #用这个lua脚本来实现读写分离
  
--log-level=info \
  
--log-file=/opt/mysql-proxy/logs/mysql-proxy-12.log \ #这是它的日志
  
--daemon
  

  
5、启动完成后,检查进程
  
ps aux | grep mysql-proxy
  

  
6、[root@rs-1 logs]# tailf mysql-proxy-12.log
  
2018-06-12 16:47:03: (critical) plugin proxy 0.8.5 started
  
2018-06-12 16:47:03: (message) proxy listening on port 172.20.6.174:4040
  
2018-06-12 16:47:03: (message) added read/write backend: 172.20.6.181:3306
  
2018-06-12 16:47:03: (message) added read-only backend: 172.20.6.84:3306
  

  配置完成,可以在另外一台机器上面使用mysql命令进行测试
  shell > mysql -uroot -predhat -h172.20.6.174  -P4040   #此处IP为mysq-proxy的IP进行测试。
  

注意,测试的时候,需要开启多台机器连接mysql-proxy进行测试。  
这是因为 mysql-proxy 代理会检测客户端连接,当连接没有超过 min_idle_connections 预设值时,不会进行读写分离,即查询操作会发生到主库上。
  
并且看一下mysq-proxy进行启动时真正读取的配置文件的位置,切莫修改错了。
  

  测试使用tcpdump进行测试:
  

    在主和从上使用tcpdump进行抓包测试,  [root@rs-1 log]# tcpdump -i eth1 -nn -XX ip dst 172.20.6.181 and tcp dst port 3306
  [root@rs-1 log]# tcpdump -i eth1 -nn -XX ip dst 172.20.6.84   and tcp dst port 3306



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-612633-1-1.html 上篇帖子: Mysql如何实现双向互为主从复制? 下篇帖子: mysql 锁查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表