Linux下MySQL主从复制(二)

MySQL的一主多从模式

原理结构图

配置步骤

1.主服务器:

 1. 改变server id 
 2. 启用二进制日志文件 
 3. 创建具有复制的用户123123

具体操作请看:http://www.crazyrui.pw:8088/index.php/2017/07/23/linux_mysql_savle_1/

2.第一个从服务器配置

 1. 改变server id 
 2. 启用relay_log 
 3. 连接主服务器
     mysql>change master to MASTER_HOST="IP",MASTER_USER="USER",MASTER_PASSWORD="PASSWORD",MASTER_LOG_BIN="",MASTER_LOG_PAS="";
4. 开始同步
     mysql>start slave;

怎么才能知道MASTER_LOG_BIN和MASTER_LOG_PASd的值? 
主服务器中使用show slave status\G; 

3.替他服务器的配置

其他服务器的配置和第一个服务器的配置是一样的11

MySQL的半同步复制方式

1.原理

   客户端提交数据与主服务器,主服务器将数据同步道从服务器中,只要从服务器中其中一个同步完成,向主服务器回复一个消息,主服务器再向客户端回复一个消息。
    即就是,客户端给主服务器提交数据,主服务器将数据同步与多个从服务器,多个从服务器中的某一个执行完成后,给主服务器返回一个消息,主服务器在向客户端返回一个消息。

2.前提条件

要想使用半同步复制,必须满足以下几个条件: 
1. MySQL 5.5及以上版本 
2. 变量have_dynamic_loading为YES
 3. 异步复制已经存在12341234

3.主服务器配置

 1. 改变server id 
 2. 启用二进制日志文件 
 3. 创建具有复制的用户 
 4. 安装插件
    mysql> install plugin rpl_semi_sync_master soname ‘semisync_master.so‘
 5. 开启半同步复制:
    mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;123456789123456789

4.从服务器配置

 1. 改变server id 
 2. 启用relay_log 
 3. 安装插件
    mysql>  install plugin rpl_semi_sync_slave soname ‘semisync_slave.so‘;
 4. 连接主服务器
     mysql>change master to MASTER_HOST="IP",MASTER_USER="USER",MASTER_PASSWORD="PASSWORD",MASTER_LOG_BIN="",MASTER_LOG_PAS=""; 
5. 开启半同步模式:
    mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1
 6. 开始同步
     mysql>start slave;

复制过滤器

怎么才能使用主从复制只备份数据库中的个别表呢?

第一种方法:
    在主服务器进行过滤
    原理:在主服务器上过滤记入二进制日志文件中的信息,实现数据库的过滤
    在配置文件中,加入以下几行
    binlog_do_db=数据库             //进行白名单
    binlog_ignore_db=           //进行黑名单第二种方法:
    在从服务器上进行过滤
    原理:利用sql thread线程进行过滤,表示只采用那个库的日志。
    在配置文件中,加入以下几行

    replicate_do_db=       //进行数据库过滤白名单
    replicate_ignore_db=    //进行数据库过滤黑名单

    replicate_do_table=db.tbname     //进行数据库中的表过滤
    replicate_ignore_table=db.tbname

    通配符过滤
    replicate_wild_do_table=
    replicate_wild_ignore_table=

  • 0
时间: 2024-10-13 01:55:38

Linux下MySQL主从复制(二)的相关文章

linux下mysql主从复制(第二篇读写分离) mycat 中间件

linux下mysql主从复制(第二篇读写分离) mycat 中间件 接着上篇文档补全,mysql 读写分离,在上篇文章案例下准备好Mycat-server-1.4-release-20151019230038-win.tar.gz 解压包 1.解压后的文件如下: 1.1 接下来进入到conf 目录下配置四个文件server.xml.schema.xml.rule.xml.log4j.xml 下面一一介绍 1.2 首先在我们主服务上面test 库下新建两张表如下: CREATETABLE`t_u

Linux下Mysql主从复制

一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. 二.MySQL主从复制(读写分离)和集群的区别:我对MySQL也是刚开始研究,不是很专业.我的理解是:1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用

mysql学习(3)-linux下mysql主从复制

前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. MySQL主从复制(读写分离)和集群的区别: 1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作).局限性:(1)配置好主从复制之后,同一张表

linux下mysql基于mycat做主从复制和读写分离之基础篇

Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , mycat1.6-RELEASE jdk1.7及其以上版本2.实现步骤一(mycat实现读写分离) 1.首先在两台服务器安装mysql 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rp

linux下mysql数据库主从同步配置

说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作 备注: 作为主从服务器的MySQL版本建议使用同一版本! 或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本! 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接

linux 下mysql的启动 、调试、排错

Linux 下 MySQL 启动与关闭 说明 一.启动 1.1  MySQL 进程 可以用ps 命令查看进程: [[email protected] ~]# ps -ef|grep mysql root     2161     1  0 09:38 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe--datadir=/var/lib/mysql --pid-file=/var/lib/mysql/rac2.pid mysql    2418  216

Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)

一.登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下:+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8 || character_set_connectio

Linux下mysql基本操作

Linux下mysql基本操作                            作者:浩浩哥来了 对mysql进行初始密码的添加 方法(一) mysqladmin -uroot password 123 方法(二) 如果在添加初始密码是报错了可以进行我下面的方法修改密码. ERROR1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 在/etc/my.cnf文件中添加skip-grant-

Linux下MySQL默认对表名区分大小写

有个项目部署到服务器上,日志里老是提示找不到表. 原来Linux下MySQL默认对表名区分大小写. 解决方法: 一.规范代码,表名全部大写 二.修改MySQL配置,使表名全部自动转为小写. 1.用ROOT登录,修改/etc/my.cnf 2.在[mysqld]下加入一行:lower_case_table_names=1 3.重新启动数据库                                              解释 0 使用CREATE TABLE或CREATE DATABAS