DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式

一、MySQL一主一从
二、配置主从从同步结构
三、配置半同步复制模式

一、MySQL一主一从

DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第1张图片
DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第2张图片
1、主从同步原理
DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第3张图片
DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第4张图片
2、构建主从同步
DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第5张图片
1)确保数据保持一致
DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第6张图片
DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第7张图片
例:
主库:


一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
注:/usr/local/mysql/bin/ —> mysql的data目录
二、导入数据库
1、首先建空数据库(要与删除的表名一致)
mysql>create database abc;
2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql


2)配置主服务器(192.168.4.51)

 ]# vim /etc/my.cnf
     [mysqld]
    .......
    log_bin=master51
    server_id=51
    binlog_format="mixed"
    ........
    ]# systemctl restart mysqld
    ]# ls /var/lib/mysql/master1.*	//查看日志文件

-授权用户
对所有库(默认不允许对单个库)有同步权限

mysql> grant replication slave on *.* to repluser@"%" identified by "[email protected]";
mysql> show master status;

3)配置从服务器(192.168.4.52)

  • 调整运行参数
    -指定server_id 不允许与主库server_id值相同

     ]# vim /etc/my.cnf
      .....
      [mysqld]
      server_id=52
      .......
      ]# systemctl restart mysqld
    
  • 指定主库信息–>-要用自己的root进入数据库

    ]# mysql -u root -p123456
      mysql> change master to
      			> master_host="192.168.4.51",	//主库IP地址
      			>master_port=3306,	//默认是3306
      			> master_user="repluser",	//主库授权用户名
      			> master_password="[email protected]",	//授权用户密码
      			> master_log_file="master51.000001",	//日志文件
      			> master_log_pos=441;	//偏移位置
      mysql> show master status;	//查看偏移位置l
      
      mysql> start slave;	//启动slave进程
    

注意:1、Master信息会自动保存到/var/lib/mysql/master.info文件
2、以后要更改master信息时,应先stop slave

–查看slave状态
确认IO线程、SQL线程都以运行

mysql> show slave status\G;	//查看当前的从库状态
Slave_IO_Running: Yes			//IO线程已运行
 Slave_SQL_Running: Yes	//SQL线程已运行
mysql> show slave status\G;	//查看当前的从库状态

问题:线程没运行。
解决方法:Last_IO_Error: 具体报错信息
Last_SQL_Error: 具体报错信息
1、主从uuid一致
cat auto.conf //查看uuid
vim auto.conf //修改uuid
2、配置不上从库可能是格式错误
3、用户连不上主,是密码错误
select user,host from mysql.user;
set paassword for reluser@“从库IP”=password(“密码”);
4)日志偏移量问题
show master status;

  • 从服务器相关文件
    DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第8张图片

4)客户端测试(192.168.4.50)
主库(51)授权要连接的用户

mysql > grant all on gamedb.* to webuser@"%" identified by "[email protected]";

客户端(50)使用授权用户连接主库(51)

]# mysql -h192.168.4.51 -uwebuser [email protected]
mysql> create database gamedb;
Query OK, 1 row affected (0.19 sec)
mysql> create table gamedb.a(id int);
Query OK, 0 rows affected (0.38 sec)
mysql> insert into gamedb.a values(111);
Query OK, 1 row affected (0.11 sec)
mysql> insert into gamedb.a values(111);
Query OK, 1 row affected (0.17 sec)
mysql> insert into gamedb.a values(111);
Query OK, 1 row affected (0.09 sec)

在其他从库上也能看到相同的数据
把从服务器还原初始状态
存放的路径:/var/lib/mysql
DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第9张图片
删除以上的配置即可

常用的配置选项

  • 主库配置选项
    DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第10张图片

  • 从库配置选项
    DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第11张图片

结构类型

主从同步结构
DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第12张图片

  • 配置主从从结构
  • 拓扑结构如下:
    DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第13张图片

复制模式

DBA01 一、MySQL主从同步、二、主从同步模式 三、半同步复制模式_第14张图片

- 配置半同步复制模式

  • 主从都需要配置
    步骤一:查看是否允许动态加载模块,

1)查看是否允许动态加载模块默认允许

mysql> show  variables  like  'have_dynamic_loading';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| have_dynamic_loading | YES   |
+----------------------+-------+
1 row in set (0.01 sec)

2)命令行加载插件,用户需有SUPER权限
主库上面操作。

mysql> install plugin rpl_semi_sync_master   soname   'semisync_master.so';

从库上面操作:

mysql> install plugin rpl_semi_sync_slave soname  'semisync_slave.so';
  • 查看系统库下的表,模块是否安装成功:

主库:

mysql> SELECT  PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS  WHERE PLUGIN_NAME LIKE '%semi%';

+----------------------+---------------+
| PLUGIN_NAME          | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE        |
+----------------------+---------------+

从库:


  mysql> SELECT  PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS  WHERE PLUGIN_NAME LIKE '%semi%';
    +---------------------+---------------+
    | PLUGIN_NAME         | PLUGIN_STATUS |
    +---------------------+---------------+
    | rpl_semi_sync_slave | ACTIVE        |
    +---------------------+---------------+

3)启用半同步复制,在安装完插件后,半同步复制默认是关闭的
主库上面执行:

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

从库上面执行:

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
  • 查看半同步复制模式是否启用:

主库:

mysql>  show  variables  like  "rpl_semi_sync_%_enabled";
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| rpl_semi_sync_master_enabled | ON    |
+------------------------------+-------+

从库:

mysql> show  variables  like  "rpl_semi_sync_%_enabled";
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| rpl_semi_sync_slave_enabled | ON    |
+-----------------------------+-------+

4)永久启用半同步复制
主库配置:

]# vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1

从库配置:

]# vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1

在高可用架构下,master和slave需同时启动,以便在切换后能继续使用半同步复制

]# vim /etc/my.cnf
[mysqld]
plugin-load 
="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1

你可能感兴趣的:(MySQL数据库知识集,MySQL主从同步,MySQL主从同步模式,半同步复制模式)