MySQL主从复制相关知识点以及实现主从复制步骤(一主一从)

目录

相关知识点:

        一、MySQL 支持的复制实现类型

        二、主从复制的原理图

          主从复制的原理

         三、补充知识点

        (一)线程(thread)

        (二)I/O(Input/Output) 指的是计算机与外部设备之间的数据传输

MySQL主从复制的搭建

         一、准备工作

        (一)准备 2 台 CentOS 虚拟机;详见http://t.csdn.cn/vH97M       

        (二)每台虚拟机上需要安装好 mariadb以及mariadb-server

         二、对时服务器:ntp服务器

         (一)master(主服务器操作)

         (二)客户端对时(客户端操作)

         三、主服务器的mysql配置

          (一)修改配置文件/etc/my.cnf

          (二)启动master服务器                systemctl  restart  mariadb

           (三)登录mysql

           (四) 配置可用的访问用户

           (五)查看master的日志信息show master status;

             四、从服务器的mysql配置

             (一)修改配置文件/etc/my.cnf

             (二)启动master服务器                systemctl  restart  mariadb 

             (三) 指定master

             (四)开启slave                     slave start;

              (五)查看slave状态                show slave status\G;

              (六)确认线程状态

               (七)两个线程状态都为Yes时,会生成以下文件                    

               (八)在指定master时,可能会出现的问题

                五、验证主从复制

             (一)在Master中创建数据库jx         create database jx;

             (二)在Slave中查看数据库               show databases;


相关知识点:

        一、MySQL 支持的复制实现类型

        基于语句的复制(STATEMENT):在主服务器上执行的 SQL 语句,在从服务器上执行同样的语句。MySQL 默认采用基于语句的复制,效率比较高。(SQL语句重新执行)

        基于行的复制(ROW):把改变的内容复制过去,而不是把命令在从服务器上执行一遍。(复制数据)

        混合类型的复制(MIXED):默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。(即基于语句又基于行)

        二、主从复制的原理图

英文版(注意:⑤应为write)
中文版

          主从复制的原理

    slave会从Master读取binlog来进行数据同步。

         三、补充知识点

          (一)线程(thread)

        线程是轻量级的执行单元,它与进程共享进程的地址空间、文件描述符等。

        线程是由进程创建的,每个进程至少有一个线程。

        线程有三种类型:
            ①用户线程
        用户线程是由用户空间的线程库(如pthread库)实现的,用户线程在内核中并不存在对应的线程实体,它们的调度和管理都由用户程序完成。
            ②内核线程
        内核线程是由内核创建和管理的线程,它们是真正的系统执行单元。内核线程可以访问内核的数据结构和代码,但不能访问进程的用户空间。
            ③轻量级进程(LWP)
        轻量级进程也是由内核创建和管理的线程,它们与内核线程类似,但是具有更轻量级的调度和上下文切换开销。

        (二)I/O(Input/Output) 指的是计算机与外部设备之间的数据传输

    I/O可以分为以下几种类型
       ① 阻塞I/O
            当应用程序发起一个I/O操作时,内核会一直等待,直到操作完成并返回结果。在等待期间,进程会被阻塞,无法执行其他任务。
       ② 非阻塞I/O
            当应用程序发起一个I/O操作时,内核会立即返回,无论操作是否完成。如果操作未完成,内核会返回一个错误码,应用程序可以继续执行其他任务。
       ③ I/O多路复用
            I/O多路复用是一种同时等待多个I/O操作完成的机制。在Linux中,可以使用select、poll、epoll等系统调用实现I/O多路复用。
        ④信号驱动I/O
            信号驱动I/O是一种事件驱动的I/O机制,应用程序通过信号处理函数来处理I/O事件。在Linux中,可以使用sigaction系统调用来设置信号处理函数。
        ⑤异步I/O
            异步I/O是一种非阻塞的I/O机制,当应用程序发起一个I/O操作时,内核会立即返回,但不会阻塞进程。当操作完成时,内核会通知应用程序。在Linux中,可以使用aio_read、aio_write等异步I/O函数实现异步I/O。

MySQL主从复制的搭建

         一、准备工作

        (一)准备 2 台 CentOS 虚拟机;详见http://t.csdn.cn/vH97M
        (二)每台虚拟机上需要安装好 mariadb以及mariadb-server

               注意:2 台 CentOS 虚拟机静态配置IP要修改

                        2 台 CentOS 虚拟机时间要同步

        二、对时服务器:ntp服务器

                作用:为了让主从服务器之间没有时间差

          (一)master(主服务器操作)

            ①安装:yum install -y ntp
            ②修改配置文件:vim  /etc/ntp.conf        注意:这个配置文件不分区域
            配置:  server 127.127.1.0                                #定义时间服务器
                         fudge 127.127.1.0 stratum 8                #定义时间层次
            ③启动服务:systemctl start ntpd
            ④查看系统时间也就是网络时间                date
            ⑤查看硬件时间,也就是主板上电池所支持的时间点                 hwclock
            ⑥实现系统与硬件时间同步(同步的是系统时间):hwclock    -w

         (二)客户端对时(客户端操作)

                       ntpdate 主服务器IP地址

         三、主服务器的mysql配置

                 (一)修改配置文件/etc/my.cnf

                            server-id=11
                            log-bin=master-bin
                            log-slave-updates=true

                                注意:该配置需要写到 [mysqld]区域内

                 (二)启动master服务器                systemctl  restart  mariadb

                (三)登录mysql

                 (四) 配置可用的访问用户

    grant replication slave on *.* to 'slave'@'192.168.115.%' identified by '123.com';
    flush privileges;       #表示刷新特权

                (五)查看master的日志信息show master status;

             四、从服务器的mysql配置

                (一)修改配置文件/etc/my.cnf

                    server-id=22
                    relay-log=slave-bin
                    relay-log-index=slave-bin.index

                注意:该配置也需要写到 [mysqld]区域内

                (二)启动master服务器                systemctl  restart  mariadb 

               (三) 指定master

change  master  to  master_host='192.168.115.128',master_user='slave',master_password='123.com',master_log_file='master-bin.000003',master_log_pos=555;
      注意:① 在master配置输入查看master的日志信息的命令show master status;  能够查看到
                    master_log_file='master-bin.000003'
                    master_log_pos=555
                ②master_password='123.com‘           指定的是slave的密码

                (四)开启slave                     slave start;

                (五)查看slave状态                show slave status\G;

                (六)确认线程状态

                    Slave_IO_Running: Yes
                    Slave_SQL_Running: Yes

                (七)两个线程状态都为Yes时,会生成以下文件                    

① cd   /var/lib/mysql     ②ll


                     (八)在指定master时,可能会出现的问题

                          1、问题一

图一

图二

                        解决办法:

                        ①关闭slave                 slave  stop;

                        ②cd   /var/lib/mysql

                        ③ ll

                        ④rm  -cf   master.info    slave-bin.*   relay-log.info

                        ⑤重新指定master

                        change master to master_host='192.168.115.128',master_user='slave',master_password='123.com',master_log_file='master-bin.000001',master_log_pos=2031;
   注意:此时的 master_log_file='master-bin.000001',master_log_pos=2031与之前的值有所不同,需要再次在master配置输入查看master的日志信息的命令’show master status;  ‘,重新输入
                       ⑥再次开启slave                     slave start;

                         2、问题二

图三
图四

                           解决办法:检查修改的配置文件是否写到 [mysqld]区域内

                五、验证主从复制

(一)在Master中创建数据库jx         create database jx;

(二)在Slave中查看数据库               show databases;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值