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

[经验分享] mysql 主从分离 读写分离(mysql-proxy)

[复制链接]

尚未签到

发表于 2018-10-10 07:35:15 | 显示全部楼层 |阅读模式
  mysql主备同步:
  dd1主:yum install mysql-server -y
  vim /etc/my.cnf
DSC0000.png

  server-id=1
  log-bin=mysql-bin 启动二进制日志系统
  binlog-do-db=test 需要同步的数据库
  binlog-ignore-db=mysql 禁止同步的数据库
  /etc/init.d/mysqld start
  show master status
DSC0001.png

  mysql> GRANT REPLICATION SLAVE ON *.* TO dd@'172.25.254.%'IDENTIFIED BY 'redhat'  创建同步用户并给予权限
  mysql>Flush privileges
DSC0002.png

  dd2备:yum install mysql-server -y
  测试 看能不能远程登陆访问:mysql -h 172.25.254.11dd -p redhat
DSC0003.png

  vim /etc/my.cnf
DSC0004.png

  server-id=2
  read-only
  /etc/init.d/mysqld start
  在同步之前确保 master 与 slave 上的数据一致性
  mysql> change master tomaster_host='172.25.254.11', master_user='dd',
  master_password='redhat',master_log_file='mysql-bin.000003', master_log_pos=106;
  slave start
DSC0005.png

  show slave status\G
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes   如果都是 yes,表示从库的 I/O,Slave_SQL 线程都正确开启.表明数据库正在同步
DSC0006.png

  测试:
DSC0007.png

DSC0008.png

DSC0009.png

DSC00010.png

DSC00011.png

  mysql数据库的主备(gtid方式)
  gtid是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务id,它由服务器id及事物id组合而成,这个全局事物id不仅仅在原始服务器上唯一,在所有存在主从关系的mysql服务器也是唯一的
  安装软件包:(两台数据库同时做)
  tar xfmysql-5.7.17-1.el6.x86_64.rpm-bundle.tar
  yum install -ymysql-community-client-5.7.17-1.el6.x86_64.rpmmysql-community-common-5.7.17-1.el6.x86_64.rpmmysql-community-libs-5.7.17-1.el6.x86_64.rpmmysql-community-libs-compat-5.7.17-1.el6.x86_64.rpmmysql-community-server-5.7.17-1.el6.x86_64.rpm
  yum install * -y
DSC00012.png

DSC00013.png

  注意:myslq密码在启动时初始化生成
  mysql -p

  alter userroot@localhost>
DSC00014.png

DSC00015.png

  dd1()
  vim /etc/my.cnf
  gtid-mode=ON
  enforce-gtid-consistency
  log-bin=mysql-bin
  binlog-do-db=test
  log-slave-updates  slave更新是否记录日志
DSC00016.png

DSC00017.png

  dd2(备)
  vim /etc/my.cnf
  gtid-mode=ON
  enforce-gtid-consistency
  #log-bin=mysql-bin
  #binlog-do-db=test
  log-slave-updates
DSC00018.png

  /etc/init.d/mysqld restart (两台同时)
  dd1:mysql -p

  grant replicationslave on *.* to dd@'172.25.42.%'>
DSC00019.png

  dd2:mysql -p
  mysql -u dd -h172.25.42.10 -p (测试)
  change master tomaster_host='172.25.42.10',master_user='dd',master_password='Westos+007',master_auto_position=1;
DSC00020.png

  (注意和前一个主备设置的区别就不用手动添加要同步的日志自动定位因为在生产环境中备份服务器很可能不止一台这样每一分里面的同步日志是不同的无法定位所以gtid可以不用指定binlog和主mysql的读取指针定位)
  start slave
  show slave status\G
DSC00021.png

  同步测试:
DSC00022.png

DSC00023.png

DSC00024.png

DSC00025.png

DSC00026.png

  主备mysql半同步传输(io)(一个binlog 返回一个ACK mysql上面的数据才会提交)异步传输(不需要返回ACK就提交)
  主:show plugins
DSC00027.png

  install pluginrpl_semi_sync_master soname 'semisync_master.so'
DSC00028.png

  set globalrpl_semi_sync_master_enabled=1;
DSC00029.png

  show global statuslike '%semi%';
  show globalvariables like '%rpl_semi%';
  从:show plugins
  install pluginrpl_semi_sync_master soname 'semisync_master.so';
DSC00030.png

  install pluginrpl_semi_sync_slave soname 'semisync_slave.so';
  show global statuslike '%semi%';
  show globalvariables like '%rpl_semi%';
DSC00031.png

  测试半同步,异步的切换:
  stop slaveio_thread
  insert intotest.usertb values ('dd331','41113331');
  发现提交等待10s 备机无相应(ACK),则转为异步
  多线程并行复制:(针对sql 只在slave上面做)
  备:vim /etc/my.cnf
  slave-parallel-type=LOGICAL_CLOCK
  slave-parallel-workers=16
  master_info_repository=TABLE
  relay_log_info_repository=TABLE
  relay_log_recovery=ON
  /etc/init.d/mysqldrestart
  mysql -p
  show processlist (查看线程)
  mysql 读写分离(mysql-proxy)
  主机:dd1.example.com 172.25.254.11
  备机:dd2.example.com 172.25.254.12
  管理机:dd3.example.com 172.25.254.13
  dd3:
  tar zxfmysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
  mvmysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/
  cd /usr/local/
  ln -smysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy
  cd /usr/local/mysql-proxy/bin
  vim mysql-proxy.conf
  [mysql-proxy]
  user=root
  #admin-username=lin3615
  #admin-password=123456
  #proxy-address=192.168.179.142:4040
  proxy-read-only-backend-addresses=172.25.0.4
  proxy-backend-addresses=172.25.0.3
  proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
  #admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua
  log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
  log-level=info
  daemon=true
  keepalive=true
DSC00032.png

  cd /usr/local/mysql-proxy/share/dos
  vim rw-splitting.lua
DSC00033.png

  cd/usr/local/mysql-proxy
  mkdir logs
  cd/usr/local/mysql-proxy/bin
  ./mysql-proxy  --defaults-file=mysql-proxy.conf
  chmod 600mysql-proxy.conf
DSC00034.png

  dd1:
  grant all on *.* to proxy@'172.25.254.%'identified by'Westos+007';
  测试:
DSC00035.png

  通过代理访问数据库实现读写分离
DSC00036.png



运维网声明 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-619707-1-1.html 上篇帖子: Mysql 主从复制GTID-zhuang 下篇帖子: MySQL-Last_Errno: 1594
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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