搭建MySql主从服务器

0.架构方案

搭建MySql主从服务器_第1张图片

1)中继数据库,用来把主库的操作中转 过来,然后同步到从库中去

2).中继数据库中是不存储数据的

3).实现方法时把中继数据库的存储引擎 设置成BLACKHOLE

4).在修改存储引擎的时候,需要先关闭日志记录在修改    

         mysql>set sql_log_bin = off;    

         mysql>alter table dbName.tbName engine = blackhole;    

         mysql>set sql_log_bin = on;

如果中继服务器存储引擎修改成 blackhole,那么从服务器只能检测到主服务器的insert操作,不能监控到update和delete操作

我遇到的问题,暂时还不知道原因

1.准备(由于资源有限,下面只配置一个从服务器)

   

服务器 IP地址
Master-Server(主服务器) 192.168.1.60
Relay-Server(中继服务器) 192.168.1.64
Slave-Server(从服务器) 192.168.1.66

2.使用Navivat远程连接Master-Server

     1)创建数据库

        搭建MySql主从服务器_第2张图片

 

  2)在数据库test中创建表user

搭建MySql主从服务器_第3张图片

 

3.使用xshell进入主服务器

           1)停止MySQL服务

service mysqld stop

搭建MySql主从服务器_第4张图片

          2).配置MySql属性文件内容

vi /etc/my.cnf
            #开启二进制日志
              log-bin=mysql-bin
              #二进制日志格式
              binlog_format=mixed
              #配置唯一的servier-id
              server-id=1
              #需要同步的二进制数据库名
              binlog-do-db=
              #不同步的二进制数据库名
              binlog-ignore-db=information_schema
              binlog-ignore-db=mysql
              binlog-ignore-db=personalsite
              #确保binlog日志写入后与硬盘同步
              #使得mysql每次提交事务的时候把二进制日志的内容同步到磁盘上,
              #即使服务器崩溃也会把时间写入日志文件
              #sync-binlog= 0...n
              #0 表示Filesystem自行决定什么时候来做同步,或者cache满了之后,才同步到磁盘
              #n 表示当每进行n次事务提交后,MySQL将进行异常fsync之类的磁盘同步指令,
              #        来将binglog_cache中的数据强制写入磁盘
              sync-binlog=1
              #跳过主从复制中遇到的所有错误或指定类型的错误,避免slave复制中断
              #slave-skip-errors=1062,1053
              #slave-skip-errors=all
              #slave-skip-errors=ddl_exist_erros

    3).重启MySQL服务

service mysqld start

搭建MySql主从服务器_第5张图片

   4).给从服务器创建连接主服务器的用户并授予 REPLIECATION SLAVE权限

create user 'relay'@'192.168.1.64' identified by 'MaryF0315';
grant REPLICATION SLAVE on *.* to 'relay'@'192.168.1.64';
flush privileges;

注意这里的IP地址为中继服务器的IP

搭建MySql主从服务器_第6张图片

  5).查看Master状态

 show master status;

搭建MySql主从服务器_第7张图片

   6).使用xshell连接中继服务器,检验为中继服务器分配的用户是否可以连接主服务的MySql数据库

 mysql -urelay -pMaryF0315 -h 192.168.1.60

搭建MySql主从服务器_第8张图片

    7.导出要做主从的数据库,把它导入到中继服务器,以及从服务器

#在导出数据库之前,需要锁库
mysql> flush tables with read lock;

#在主服务器导出数据库
mysqldump -uroot -pMaryF6650 -B test > test.sql
#把导出的sql上传到中继服务器
scp test.sql 192.168.1.64:/root/
#把导出的sql上传到从服务器
scp test.sql 192.168.1.66:/root/


#在中继服务器和所有从服务器启动之后,才可以解锁
mysql> unlock tables;

搭建MySql主从服务器_第9张图片

4.使用xshell进入中继服务器

     1).把主服务器上传过来的数据库导出dump导入到中继服务器数据库

mysql -uroot -pMaryF6650 < test.sql

搭建MySql主从服务器_第10张图片

   2).如果曾经配置过主从服务器,则需要先停止从服务器

mysql> stop slave;

   3)停止MySQL服务器

service mysql.server stop

  4)编辑/etc/my.cnf文件

vim /etc/my.cnf
          #配置唯一的servier-id要保证在这个主从关系中,是唯一的
          server-id=2
          #中继日志配置
          #relay-log=slave-relay-bin
          #relay-log-index=slave-relay-bin.index
          #中继数据库需要配置的选项
          log-bin = mysql-bin-relay
          log-slave-updates = 1

5).启动MySQL服务器,因为我自己的虚拟机释通过拷贝获取的,所以需要在启动MySQL之前把auto.cnf文件移除或者重命名

cd /var/lib/mysql
mv auto.cnf /var/lib/mysql/auto.cnf.bak
service mysqld start

搭建MySql主从服务器_第11张图片

 6)登陆中继服务器数据库

mysql -uroot -pMaryF6650

7) 执行命令,让中继服务器关联上主服务器

mysql> change master to
    master_host='192.168.1.60',#主服务器host
    master_port=3306,#主服务器端口号
    master_user='relay',#主服务器为中继服务器创建的用户名
    master_password='MaryF0315',#主服务器为中继服务器创建的用户名配套的密码
    master_log_file="mysql-bin-master.000001", --主服务show master status中的信息
    master_log_pos = 771; --主服务show master status中的信息,配置0也可以

8).启动从服务器

mysql> start slave;

9)查看从节点状态,只有Slave_IO_Running和Slave_SQL_Running的都正常启动才成功

mysql> show slave status\G;

 

搭建MySql主从服务器_第12张图片

5.使用xShell登陆从服务器

       1)导入从主服务器导出的数据库sql

mysql -uroot -pMaryF6650 < test.sql

搭建MySql主从服务器_第13张图片

       2)登陆从服务器数据库,如果曾经配置过从服务器,则需要先停止从服务器,然后停止MYSQL服务器

mysql> stop slave;
mysql> quit;

# service mysqld stop

   

   3)修改my.cnf 文件,添加唯一server-id

vim /etc/my.cnf

#配置唯一的servier-id要保证在这个主从关系中,是唯一的

server-id=3

  4) 重新启动MYSQL服务器

service mysqld start

 5)登陆从服务器mysql数据库,让从服务器关联上中继服务器

            a:登陆中继服务器,为从服务器连接中继服务器创建用户

create user 'slave-01'@'192.168.1.66' identified by 'MaryF0315';
grant REPLICATION SLAVE on *.* to 'slave-01'@'192.168.1.66';
flush privileges;

搭建MySql主从服务器_第14张图片           

        b:在从服务器窗口,检测在中继服务器创建的用户是否可以连接中继服务器的数据库

mysql -uslave-01 -pMaryF0315 -h 192.168.1.64

搭建MySql主从服务器_第15张图片

    c:在中继服务器,查看中继服务器主节点状态,然后配置到从服务器上去

搭建MySql主从服务器_第16张图片

   d:在从服务器上建立和中继服务器的关联关系

mysql> change master to
    master_host='192.168.1.64',#中继服务器host
    master_port=3306,#中继服务器端口号
    master_user='slave-01',#中继服务器为中继服务器创建的用户名
    master_password='MaryF0315',#中继服务器为中继服务器创建的用户名配套的密码
    master_log_file="mysql-bin-relay.000003", --中继服务show master status中的信息
    master_log_pos = 1047; --中继服务show master status中的信息,配置0也可以

  e:启动从服务器

mysql> start slave;

  f:查看从节点状态

mysql> show slave  status\G;

搭建MySql主从服务器_第17张图片

6.如何查看二进制日志文件中的的内容

    1) 第一种方法

show master status;
system mysqlbinlog /var/lib/mysql/[binlog日志名称];

   2)第二种方法

show master status;
mysqlbinlog /var/lib/mysql/[binlog日志名称] > test.sql;
#然后使用more,less等命令查看test.sql文件

  3)第三种方法

#查看binlog日志文件名称
show master status;
#查看binlog日志文件事件开始pos
show binlog events in '[binlog日志名称]';
show binlog events in '[binlog日志名称]' from [binlog日志文件事件开始pos];

 

遇到的问题: Slave_IO_Running: Connecting

    1) 网络不通,或者host错误

    2) 用户名密码不对

    3) pos不对

搭建MySql主从服务器_第18张图片

开启主从后,会产生大量的binlog日志,占用磁盘空间,可以通过重启master来实现删除binlog日志文件

你可能感兴趣的:(MySql)