MySQL配置主从同步主从复制

1.MySQL主从基本介绍

        MySQL内建的复制功能是构建大型,高性能应用程序的基础。可以方便的实现数据的多处自动备份,实现数据库的拓展。复制过程中一个服务器充当主服务器,一个或多个其他服务器充当从服务器。主服务器将更新写入二进制日志,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制

2.MySQL主从复制准备工作

        (1)主数据库:10.8.152.169 /Ubuntu     从数据库:10.8.152.110/Ubuntu

        (2)两台虚拟机启动成功,并且能够相互ping通(ping 10.8.152.169; ping 10.8.152.110)

3.配置master

           首先找到mysqld.cnf文件并修改配置文件

            sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf      #这一步找到配置文件并进入编辑模式编辑

            找到[mysqld]并在下面插入修改代码

            bind_address   =  0.0.0.0        #绑定地址设置为0.0.0.0确保所有的从服务器都能够连接

            server-id           =  110            

            log_bin              =  /var/log/mysql/mysql-bin.log   #开启bin_log日志

            expire_logs_days = 10    #日志的缓存时间

            max_binlog_size  = 200M    #日志的最大大小

            binlog_do_db       = python   #这里就是需要同步的数据库名称,这里选择python,下面我们创建一个python库

            binlog_ignore_db = mysql    #选择忽略同步数据库的名称,因为数据库自带一个mysql库,所以在这我们忽略掉mysql库

            修改完配置文件之后一定要重启数据库服务使配置文件生效(service mysql restart)

4.配置slave

            配置slave跟master的过程基本相同

            首先找到mysqld.cnf文件并修改配置文件

            sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 这一步找到配置文件并进入编辑模式编辑

            找到[mysqld]并在下面插入修改代码

            bind_address   =  0.0.0.0       

            server-id           =  169            

            expire_logs_days = 10    

            max_binlog_size  = 200M  

            binlog_do_db       = python   

            binlog_ignore_db = mysql    

            重启数据库服务

5.创建需要同步的数据库及同步权限的账户

            因为刚才我们写入配置文件中的同步数据库名称为python所以我们在主从数据库上都创建一个名称为python的数据库

            mysql>create database python;  #主从数据库都需要创建

            在master上创建一个同步权限的账户,用来同步数据库

            mysql>grant replication slave on *.* to 'shuang'@'%' identified by '123456'    #这里我创建了一个账户名称为shuang密码              为123456  *.*代表指定数据库下的所有数据表

            创建完数据表之后不要急着操作从库,必须先查看主库的状态,记录二进制文件名和位置

            show master status;   #查看主库的状态

             

             如图,File里的mysql-bin.000002就是二进制日志文件名,Position就是二进制文件的位置,这两个信息配置从库的时候               需要用到,先记录下来。

6.配置从库

             进入从服务器的数据库输入以下命令

             mysql> change master to
                     -> master_host='10.8.152.169',       
 #主服务器的ip地址
                     -> master_user='shuang',                  #刚刚创建的同步权限的账户   
                     -> master_password='123456',             
#用户密码
                     -> master_port=3306,                        #端口号
                     -> master_log_file='mysql-bin.000002',        #二进制日志文件名
                     -> master_log_pos=2550;                #二进制文件的位置

如果你之前配置过从库的话,在这里直接配置会出错,需要先关闭从库(stop slave)

配置完成之后就能够查看是否成功

show slave status\G  #查看从库的状态

如图查看从库的状态,如果图中最后两行出现yes说明从库配置成功,接下来就可以在主库中操作试验一下

如图我们在python这个数据库中新建了一个名叫cla的数据表

我们可以看到在从库中也出现了对应的cla数据表,当你插入或者删除数据的时候,从库也会进行相应的操作,MySQL的主从就已经成功了

最后,希望大家注意一点,MySQL主从在写入或修改文件的时候,一定要在主库中进行,避免在从库中修改数据与主库发生冲突。

猜你喜欢

转载自blog.csdn.net/WanYu_Lss/article/details/81258832