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

[经验分享] Mysql主从同步+读写分离(centos7)

[复制链接]

尚未签到

发表于 2019-2-15 17:35:29 | 显示全部楼层 |阅读模式
  1、数据库主从同步
  2、amoeba proxy实现读写分离
  实验环境:
  Web:    192.168.1.14
  Mysql_proxy:      192.168.1.16

  Mysql_master:    192.168.1.18
  Mysql_slave:       192.168.1.2
  
  主从同步
  本地已经搭建好wordpress,搭建过程比较简单,在此文略过。

  每次实验第一件事,时间同步!(略)
  开启主库的binlog功能:
    vim /etc/my.cnf
        server-id = 1    #主从的id必须是唯一!
        log-bin = mybinlog

  在主库对从库授权:
MariaDB [(none)]> grant replication slave on *.* to 'slave'@'192.168.1.%' identified by '123123';
MariaDB [(none)]> flush privileges;


  将主库同步前的数据进行全备到从库:
    首先要锁库!!!
  为了防止在同步时有人对数据库进行写数据!!!
  MariaDB [(none)]> flush tables with read lock;

  systemctl restart mariadb  //重启数据库 不重启日志文件位置不会生成出来!
  重启过后进入数据库查看binlog文件名与位置(从库同步主库需要这两个参数!)
  MariaDB [(none)]> show master status;


  数据库全备:

  [root@mysql-master ~]# mysqldump -uroot -p -A --events > backup.sql

  将备份的数据库传输到从服务器:

  [root@mysql-master ~]# scp backup.sql root@192.168.1.2:/root/

  修改从库id:


  导入从库:

  [root@mysql-slave ~]# systemctl start mariadb
[root@mysql-slave ~]# mysql < backup.sql



  进行主从复制配置:
  MariaDB [(none)]> change master to \
    -> master_host = '192.168.1.18',
    -> master_port = 3306 ,
    -> master_user = 'slave' ,
    -> master_password = '123123' ,
    -> master_log_file = 'mybinlog.000001' ,
    -> master_log_pos = 245 ;
Query OK, 0 rows affected (0.01 sec)



  开启主从同步:
  MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.02 sec)
MariaDB [(none)]> show slave status\G

  解锁主库:


  查看主从服务器数据库文件:
  主从同步成功!




  主从配置步骤:
a)准备两台数据库环境(多台设备,用mysql多实例),确定能否正常启动运行
b)配置my.cnf文件,主控配置binlog和serverid ,从库配置serverid参数(不能和主库一致),一般从库不开启binlog的(注意:配置参数必须重启才生效)
c)登录主库增加用于从库连接主库同步的账户(授权),且授权replication slave权限
d)登录主库, 整库锁表 show master status进行查看binlog的位置状态
e)Linux命令行备份(mysqldump),将数据拷贝到从库上
f)解锁主库
g)把主库已有数据导入到从库,根据主库获取到的binlog的位置进行从库同步change master to
h)开启从库同步 start slave
i)从库show slave status,用于检测同步状态,并在主库去测试
  amoeba proxy实现读写分离
  Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。
  Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。
  JDK下载地址:https://www.lanzous.com/i1zcztc

  Amoeba下载地址:https://www.lanzous.com/i1zcvuj


  
  安装JDK:
  [root@LB ~]# cp jdk-6u14-linux-x64.bin /usr/local/
[root@LB ~]# cd /usr/local/
  [root@LB local]# ls

  bin  etc  games  include  jdk1.6.0_14  jdk-6u14-linux-x64.bin  lib  lib64  libexec  sbin  share  src

  [root@LB ~]# chmod a+x jdk-6u14-linux-x64.bin

  [root@LB ~]# ./jdk-6u14-linux-x64.bin  //安装的时候会有个协议,一直翻到最下面然后 输入 yes 开始安装

  做个软连接:(看个人习惯,可以不做)

  [root@LB local]# ln -s jdk1.6.0_14/  jdk1.6

  添加系统环境变量:
  [root@LB ~]# vim /etc/profile//在最后加
  export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
  

  
  重新读取生效/etc/profile

  [root@LB ~]# source /etc/profile
  

  二进制安装amoeba:
  [root@LB ~]# mkdir /usr/local/amoeba
[root@LB ~]# chmod 775 /usr/local/amoeba
  [root@LB ~]# tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/    //解压二进制安装文件 不需要安装 解压就能用!!!

  [root@LB amoeba]# bin/amoeba
amoeba start|stop
  在mysql server上给amoebe权限,amoeba将以这个身份登录mysql:

  MariaDB [(none)]> grant all on *.* to &quot;amoeba&quot;@&quot;192.168.1.%&quot; identified by &quot;123123&quot;;
MariaDB [(none)]> flush privileges;

  修改amoeba主配置文件:
  [root@LB ~]# vim /usr/local/amoeba/conf/amoeba.xml

  ---30行--
amoeba
----32行---------
123123            //提供客户端连接amoeba时需要使用这里设定的账号
  (这里的账号密码和amoeba连接后端数据库服务器的密码无关)

  ---117-去掉注释-
master   //默认数据库池为master
  master   //设置可写入数据池的服务器为master
slaves    //设置可读数据库服务器池为slaves


  配置amoeba访问数据库配置文件
  [root@LB ~]# vim /usr/local/amoeba/conf/dbServers.xml

  
                        3306

                        
                        wordpress   //配置默认的缺省数据库(这个数据库就是后端指定的库)

                        
                        amoeba  //设置amoeba连接后端数据库服务器的账号和密码,在所有后端数据库上创建该用户,并授权amoeba服务器可连接
                        
                        123123
  ____________________________________________________________________________________   

  
               
                        
                        192.168.1.18
               
        

        
               
                        
                        192.168.1.2
               
        


        
               
                        
                        1

                        
                        slave1   //这里定义slaves池中的所有成员
               

  启动amoeba服务:
  [root@LB ~]# /usr/local/amoeba/bin/amoeba start
  
  [root@LB ~]# netstat -anpt | grep java

  
  将web数据库中的数据库连接地址改成amoeba代理的地址,端口改为8066:
  [root@WEB ~]# vim /var/www/html/wp-config.php
[root@WEB ~]# systemctl restart httpd


  成功!
  

  还可以通过下面的方法来验证amoeba代理是否成功

  [root@mysql-master ~]# mysql -h192.168.1.16 -uroot -p -P8066  //-P 通过amoeba的8066端口代理到后端数据库的3306

  总结:其实amoeba是自带数据库同步的,不需要手动配置的同步数据库,但是会手动配置同步很重要!
  注意在第一次同步后,在从服务器上是没有写的权限的!!!

  实验过程很艰难,如有错误,还请各位大佬指点!感谢!





运维网声明 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-672734-1-1.html 上篇帖子: RHEL/CentOS 安装 nginx 下篇帖子: Centos安装错误的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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