zoukankan      html  css  js  c++  java
  • MariaDB 主从复制

    MySQL Replication:NySQL复制,MySQL的复制默认为异步工作模式
       mysql的复制功能是mysql内置的,装上它之后就具备了这个功能,而mysql复制是mysql实现大规模高性能应用的一个基本工具,是 mysql完成水平扩展的基本架构,为了能够应付更多的访问请求,通常情况下我们需要对服务器进行扩展,而扩展通常有两种方式:向上扩展和向外扩展;
    向上扩展:scale on,也称为垂直扩展,一般是扩充服务器的内存或CPU颗数的这种就是向上扩展。
    向外扩展:scale out,也称为水平扩展,比较一台服务器不够,再加一台服务器,再不够再加,这种情况就是向外扩展。
    其实MySQL的的复制功能就是使用MySQL向外扩展的能力,也就是水平扩展的功能。

       所谓同步的复制:首 先主服务器每更新一条数据先写到磁盘文件中,同时还要写一个到二进制日志文件中,从服务器就会到主服务器请求二进制信息保存在中继日志中,保存好后由本地 的SQL thread从中继日志应用到从服务器的本地有磁盘文件中,当这个过程完成之后再由从服务器返回确认结果给主服务器,主服务器才返回结果给客户端的。
    所谓异步复制:当主服务器要写数据时,先写到本地的磁盘,同时写到二进制文件日志中,写好二进制日志文件后就把结果返回给客户端,至于从服务有没有来主服务器同步二进制日志他不关心。
    注意:在做复制时双方的的MySQL要一致,如果不一致,主的要低于从的。
       MySQL主从服务的工作原理图:

    wKioL1NJSEbx9Dz0AAOohJbAW-w420.jpg

       这里还要注意,如果从服务器不断的到主服务器来请求数据,发现这些数据已经是最新的数据了,那从服务器的I/O thread将会转为睡眠状态,因为主服务器会通知,而I/O线程不会做轮循,从服务器的二进制日志文件通常是被关闭状态的,从服务器是不允许执行写操作 的。

    下面来完成主从复制的基本操作步骤:
       1、这里我们要有两台主机、我这里使用克隆主服务器的主机当做从服务器、首先要把虚拟主机关机才可以克隆的:

    wKiom1NJSNfwhN9ZAAJ_Vy_-uh0925.jpg

    wKioL1NJSM3BkkBdAAEhlLpuEVw165.jpg

    wKiom1NJSRGB-e8nAAD6IOmtor0934.jpg

       克隆完之后我们就开机登录、确保主从服务器都正常运行了即可:
    wKioL1NJSUrRFE7fAAF5yBfM-pU195.jpg

    wKiom1NJSY3jwbtaAAFK_P1knII792.jpg

    wKioL1NJSZriZVDuAADbv5yisnU563.jpg

    wKioL1NJSbTinPbEAADegnAVVC0676.jpg

       2、做主从复制最重要的一点就是双方的server-id不能相同;然而在主服务器上只需要三步
       1)就是改server-id
       2)启用二进制日志
       3)创建有复制权限的帐号
       # vim /etc/my.cnf

    wKioL1NJSenhMWMOAAEgWhtbavw995.jpg


       改好之后保存退出即可,再重启服务器,创建二进制目录:

       # mkdir /data/binlogs
       # chown -R mysql.mysql /data/binlogs
       重启主服务器的mysql服务;
       # service mysqld restart 


       而后连接到主服务器上授权一个有复制权限的帐号:

      # mysql -uroot -hlocalhost -p    
    MariaDB [hellodb]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'172.16.251.156' IDENTIFIED BY 'replpass';
    MariaDB [hellodb]> FLUSH PRIVILEGES;

       3、在从服务器上有以下几步
       1)改server-id
       2)启用中继日志
       3)连接主服务器
       4)启动复制线程
       配置从服务器的相关配置信息:
       # vim /etc/my.cnf

    wKioL1NJSkbBRXGvAAE5NomCrFo978.jpg

      # mkdir /data/relaylogs/
       # chown -R mysql.mysql /data/relaylogs
       重启mysql服务:
       # service mysqld restart
       再连到从服务器的mysql服务器上:
       # mysql -uroot -hlocalhost -p
       查看一下从服务器的中继日志是否在启动状态:
       MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE '%relay%';

    wKioL1NJSw2w5rPgAAGcFF1JJ_k231.jpg

       按照上面的步骤再连接主服务器:    

    # MASTER_HOST='172.16.251.244' --主服务器的IP地址
    # MASTER_USER='repluser' --主服务器上授权复制的用户名
    # MASTER_PASSWORD='replpass' --主服务器上授权用名的密码
    # MASTER_LOG_FILE='mysql-bin.000006' --主服务器上的日志文件
    # MASTER_LOG_POS=245 --主服务器上日志文件的位置
    MariaDB [hellodb]> CHANGE MASTER TO MASTER_HOST='172.16.251.244',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000006',MASTER_LOG_POS=245; #指定日志从哪个位置开始复制

       但是此时的从服务器还没有工作起来,要使从服务器工作起来还要手动启动复制线程,我们上面的步骤写得很明白:
       MariaDB [(none)]> START SLAVE;
       wKioL1NJTOqRskaJAAHjV-swIII836.jpg
       wKiom1NJTTPRBlyQAAE2gdqxSs4231.jpg

       wKioL1NJTSXS_-QWAAD1fdFHbcA279.jpg

       wKiom1NJTYaABWNsAAD15iPHxl4387.jpg

       OK、到这里主服务器算是配置完成了,仓促整理了一下,有什么不对的地方还望多多提点,在此先谢谢你的关注了!    

  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/xiaocen/p/3702945.html
Copyright © 2011-2022 走看看