MySQL集群服务器的一些实验

具体有:

  • MySQL主从备份。
  • MySQL主主备份。
  • MySQL一主多从
  • MySQL多主一从
  • MySQL中间件Amoeba

   目标:理解原理,要会操作。

1、MySQL主从复制

 为什么要主从备份:提高容灾能力,读写分离,读库与写库分开来。提高数据库的并发能力,避免锁。

 主从同步的过程:1、master在执行sql产生binglog

          2、slave从master机器上获取binlog,存在于relay-log中,然后从上次记住的位置起执行sql语句,一旦遇到错误则停止同步。

   a、两台虚拟机master:192.168.109.2,slave:192.168.109.7

 b、配置文件配置,如图:

 

 

修改从服务器的server-id=2;这个server-id只要保证不和主服务器是相同的就行了。

注意:上述操作完成后一定要重启MySQL,我就是没有重启,第一次做,找了挺久的。

c、对从服务器进行授权

grant replication slave on *.* to asd@'192.168.109.7' identified by '12345';  

 

 

特别注意:我们这里是给asd这个用户在从远程登录主数据库读取MySQLbinlog的权限。因此需要在user表授予它权限【可以在从库用asd账户登录】。所幸,前面以及用grand命令了。

 

 d、获取主服务器中binlog名字以及大小

show master status;

 

 e、在从服务器中接收主服务器的授权

change master to master_user='ask',【前面设置的用户名】
master_password='12345',【前面设置的密码】
master_host='192.168.109.2',【主服务器ip地址】
master_log_file='mysql-bin.000053',【开始的文件大小】
master_log_pos=257;【开始的pos号码】

  如图:【下面的图片不应该用root】

 

 

 可以查看从服务器中/usr/local/mysql/data/master.info信息,如下图所示:

 

 

 d、开启从服务器

start slave;

e、进行验证

  show slave status;

如果Slave_IO_Running、Slave_SQL_Running下面的err信息没有错误,那么就是ok的,直接进入验证环节。否则要看后面错误的字段信息,比如,下面就是错误样例:

 

 

 f、进入验证环节:

   在主数据库上创建test_db。如下图:

 

 

 查看从服务器是否有相同的数据:

  

 

 

     实验成功。

问题:MySQL的从库重启后,会自动slave start么??

   答案是是的:我自己把MySQL服务使用如下命名停掉又重启,发现主从复制会自动进行。

#/usr/local/mysql/bin/mysqladmin -h 127.0.0.1 -u root -p shutdown
#/usr/local/mysql/bin/mysqld_safe &

2、MySQL主主备份

1、什么是主主备份?

答:MySQL主主备份,就是每台master既是master又是slave。这样,任何一方所做的变更,都会通过复制应用到另一方的数据库中,实现热切换。

       MySQL主从备份与主主备份的区别:

    1、MySQL主从备份对主操作数据,对从进行一个读取。如果对从进行操作数据,主不会同步数据,还可能造成数据紊乱。

    2、主主则是无论对双方那个数据库进行操作,都会同步到对方去。

 

2、实战

  环境:和主从备份的环境一样

  a、配置主从的配置文件,主要在配置文件中开启mysql binlog以及其他优化选项,如图所示:

replicate-do-db=test
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
auto-increment-increment=2
auto-increment-offset=2

注意这个testdb,就是我们要同步的数据库了,主主同步只会对这个testdb是有效的。

a、重启主从的MySQL服务

#/usr/local/mysql/bin/mysqladmin -h 127.0.0.1 -u root -p shutdown
#/usr/local/mysql/bin/mysqld_safe &

b、109.2向109.7授权,109.7接收授权

#授权
#grant replication slave on *.* to asd@'192.168.109.7' identified by '123456'; 
#show master status  [查看自己的binlog信息,作为从服务器参数]
#109.7接收授权
#change master to master_user='asd',
master_password='123456',
master_host='192.168.109.2',
master_log_file='mysql-bin.000053',
master_log_pos=107;

 

c、109.7向109.2授权,109.2接收授权

#授权
#grant replication slave on *.* to asd@'192.168.109.2' identified by '123456'; 
#show master status  [查看自己的binlog信息,作为从服务器参数]
#109.7接收授权
#change master to master_user='asd',
master_password='123456',
master_host='192.168.109.7',
master_log_file='mysql-bin.000065',
master_log_pos=107;

 

d、109.2和109.7都执行start slave,并使用show slave status查看报错信息

 

 

 

 e、进入test数据库,分别进行建表测试,测试成功,如下图:

 

 3、MySQL一主多从

跟主从复制一样,这里不做,过多的描述

 

  

 

posted @ 2020-09-28 11:36  洛飞  阅读(282)  评论(0编辑  收藏  举报