精华内容
下载资源
问答
  • MySQL双机互备的实现要配置MySQL双机互备,首先要有两个用来做备份的MySQL服务器,要实现同步更新数据,首先要知道对方的IP。在安装有MySQL的两个服务器上进入命令行模式获得主从机两台服务器的IP地址,假设主机IP为...

    MySQL双机互备的实现

    要配置MySQL双机互备,首先要有两个用来做备份的MySQL服务器,要实现同步更新数据,首先要知道对方的IP。

    在安装有MySQL的两个服务器上进入命令行模式获得主从机两台服务器的IP地址,假设主机IP为192.168.1 .100,从机IP为192.168.1.200。

    获得了两台MySQL服务器的IP地址还需要验证这两台服务器之间是否能够互相ping通,即要了解网络连接状态。在命令行中执行ping命令,如果可以互相ping通则可以继续下面的操作,如果出现一个ping不通的情况,需检查网络设置和防火墙设置,最佳是关闭防火墙,直到网络畅通。

    创建需要同步的数据库,在主机和从机中分别使用帐号root登录MySQL 服务器,如:Mysql> create database tablename

    在主机和从机上分别执行下面的命令创建用于同步操作数据库的帐号,并赋予其操作同步数据库的权限。执行命令如下:

    Mysql> grant all privileges on *.* to account@’%’ identified by‘password’;

    语句解释:

    grant是赋予权限的关键字。

    all privileges是指对数据库操作的所有权限,这里主要功能是同步数据库即互相复制的权限,可将其修改为replication。

    *.*指的是MySQL服务器中所有的数据库下所有数据表,在此如果只需要同步数据库tablename下的所有表,可将其修改为tablename.*。

    account是用于同步的帐号,其密码为password。

    %表示的是所有IP地址,为了安全也可以指定某个IP地址,主机上写从机的IP:192.168.1.200,从机上写主机为IP地址:192.168.1.100。

    整句的意思就是:赋予密码为password的帐号account访问操作%上MySQL 服务中所有数据库的数据的权限。

    Mysql> flush privileges ;

    刷新权限,必须设置。否则在使用过程中使用的是修改之前的权限。

    测试同步帐号,在“运行” ->cmd中测试。

    主机master上:

    mysql –h 192.168.1.200 –u account –p

    输入帐号account对应的密码password

    从机slave上 :

    展开全文
  • 2011-11-18 16:44936人阅读评论(0)双机互备和热备的区别:互备所指的是backup,保证数据的完整性而做的备份。主要目的是防止数据丢失。热备是为了保证应用的连续性。利用故障转移的方法实现。Linux下实现的双机互备:...

    2011-11-18 16:44

    936人阅读

    评论(0)

    双机互备和热备的区别:

    互备所指的是backup,保证数据的完整性而做的备份。主要目的是防止数据丢失。

    热备是为了保证应用的连续性。利用故障转移的方法实现。

    Linux下实现的双机互备:

    主从备份:

    1、设置同步Master

    修改 my.cnf 文件,在

    # Replication Master Server (default)

    # binary logging is required for replication

    添加如下内容:

    #log-bin=/var/log/mysql/updatelog

    server-id = 1

    binlog-do-db=discuz

    binlog-ignore-db=mysql

    重启MySQL,创建一个MySQL帐号为同步专用

    # /usr/local/mysql/bin/mysql -u root -p

    mysql> GRANT REPLICATION SLAVE ON *.* TO [email=]'back'@'%'[/email] IDENTIFIED BY 'back';

    如果想要在Slave上有权限执行 "LOAD TABLE FROM MASTER" 或 "LOAD DATA FROM MASTER" 语句的话,必须授予全局的 FILE 和 SELECT 权限:

    mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO  [email=]'back'@'%'[/email] IDENTIFIED BY 'back';

    mysql> FLUSH PRIVILEGES ;

    2、设置同步Slave

    修改my.cnf文件,添加

    server-id = 2

    master-host = 192.168.1.123

    master-user = back

    master-password = back

    master-port = 3306

    replicate-ignore-db=mysql

    replicate-do-db=discuz

    重启MySQL

    3、启动同步

    在主服务器master MySQL命令符下

    view plaincopy to clipboardprint?# /usr/local/mysql/bin/mysql -u root -p

    mysql> show master status;

    显示(当然这个是我机器的情况,你的不可能跟我一样哈,只是个例子):

    +------------------+----------+-------------------+------------------+

    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

    +------------------+----------+-------------------+------------------+

    | mysql-bin.000009 | 98 | discuz | mysql |

    +------------------+----------+-------------------+------------------+

    在从服务器master MySQL命令符下

    view plaincopy to clipboardprint?# /usr/local/mysql/bin/mysql -u root -p

    mysql> slave stop;

    mysql> change master to master_host='192.168.1.123', master_user='back', master_password='back', master_log_file='mysql-bin.000009', master_log_pos=98;

    mysql> slave start;

    用show slave status/G;看一下从服务器的同步情况

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    如果都是yes,那代表已经在同步

    往表里面写点数据测试一下看是否同步成功,如果不成功,绝对不是你的RP问题,再检查一下操作步骤!

    4、设置双向同步

    修改slave服务器的my.cnf,添加

    log-bin=/var/log/mysql/updatelog

    binlog-do-db=discuz

    binlog-ignore-db=mysql

    重启MySQL,创建一个MySQL帐号为同步专用

    view plaincopy to clipboardprint?mysql> GRANT REPLICATION SLAVE ON *.* TO [email=]'back'@'%'[/email] IDENTIFIED BY 'back';

    mysql> GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO  [email=]'back'@'%'[/email] IDENTIFIED BY 'back';

    mysql> FLUSH PRIVILEGES ;

    修改master服务器的my.cnf,添加

    master-host = 192.168.1.124

    master-user = back

    master-password = back

    master-port = 3306

    replicate-ignore-db=mysql

    replicate-do-db=discuz

    重启MySQL

    在主服务器slave MySQL命令符下:

    show master status;

    +------------------+----------+-------------------+------------------+

    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

    +------------------+----------+-------------------+------------------+

    | mysql-bin.000013 | 98 | discuz | mysql |

    +------------------+----------+-------------------+------------------+

    在服务器A MySQL命令符下:

    view plaincopy to clipboardprint?mysql> slave stop;

    mysql> change master to master_host='192.168.1.124', master_user='back', master_password='back', master_log_file='mysql-bin.000013', master_log_pos=98;

    mysql> slave start;

    mysql> slave stop;

    mysql> change master to master_host='192.168.1.124', master_user='back', master_password='back', master_log_file='mysql-bin.000013', master_log_pos=98;

    mysql> slave start;

    mysql做互备时要注意mysql 5.5以上版本不能把

    master-host = 192.168.1.124

    master-user = back

    master-password = back

    master-port = 3306

    写道my.ini文件中。要在执行完 slave stop;后 用 change  master to master_host='主的ip',master_user='用户名',mater_password='密码',master_log_file='日志',master_log_pos='同步点';

    然后slave status;

    展开全文
  • 的实时同步-双机互备.一.方案描述:Mysql数据库的双机热备方案,主要是配合linux系统的热备方案,因为pluswell热备软件(linux版)没有数据镜像的功能,所以只有用mysql自带的热备功能。二.Mysql的数据库热备配置...

    的实时同步-双机互备.

    一.方案描述:

    Mysql数据库的双机热备方案,主要是配合linux系统的热备方案,因为pluswell热备软件(linux版)没有数据镜像的功能,所以只有用mysql自带的热备功能。

    二.Mysql的数据库热备配置方法如下:

    1,测试环境:

    A机器(双网卡)

    系统:Fedora7+mysql5.0.37(系统自带)+SER

    主IP地址:192.168.20.201

    心跳ip地址:10.1.1.201

    B机器(双网卡):

    系统:Fedora7+mysql5.0.37(系统自带)+SER

    主IP地址:192.168.20.202

    心跳ip地址:10.1.1.202

    2,设置方法:

    第一步:

    我们用心跳ip地址,且确定同步的数据库为SER数据库。在这两台机器上创建复制数据帐号。

    A机器:

    Mysql>grant replication slave on *.* to ‘repl’@10.1.1.202 identified by ’123456’;

    B机器:

    Mysql>grant replication slave on *.* to ‘repl’@10.1.1.201 identified by ’123456’;

    第二步:配置mysql.cnf

    A机器

    【mysqld】

    #Replication master

    server-id = 1

    log-bin

    binlog-do-db=ser

    binlog-ignore-db=mysql

    # Replication slave

    master-host=10.1.1.202

    master-user=repl

    master-password=123456

    master-port=3306

    master-connect-retry=60

    replicate-do-db=ser

    B机器

    【mysqld】

    #Replication master

    server-id = 2

    log-bin

    binlog-do-db=ser

    binlog-ignore-db=mysql

    # Replication slave

    master-host=10.1.1.201

    master-user=repl

    master-password=123456

    master-port=3306

    master-connect-retry=60

    replicate-do-db=ser

    第三步:最后重新启动两台机器的mysql.

    #service mysqld restart

    =============================================================

    附,解释:

    1)binlog-do-db=ser表示需要备份的数据库是ser这个数据库,

    如果需要备份多个数据库,那么应该写多行,如下所示:

    binlog-do-db=backup1

    binlog-do-db=backup2

    binlog-do-db=backup3

    2) server-id=2表示本机器的序号, A,B的server-id不能相同;

    3)log-bin表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提;

    其中mysql_binary_log是日志文件的名称,mysql将建立不同扩展名,文件名为mysql_binary_log的几个日志文件.

    4) master-host=10.1.1.201表示A做slave时的master为10.1.1.201;

    5) master-user=repl这里表示master上开放的一个有权限的用户,使其可以从slave连接到master并进行复制;

    6) master-password=123456表示授权用户的密码;

    7) master-port=3306 master上MySQL服务Listen3306端口;

    8) master-connect-retry=60同步间隔时间;

    9) replicate-do-db=ser表示同步ser数据库;

    三.查看状态及调试

    1,查看master的状态

    SHOW MASTER STATUS;

    Position不应为0

    2,查看slave的状态

    show slave status;

    Slave_IO_Running | Slave_SQL_Running这两个字段应为YES|YES.

    show processlist;

    会有两条记录与同步有关state为Has read all relay log; waiting for the slave I/O thread to update it和s Waiting for master to send event .

    3,CHANGE MASTER TO

    如果A的Slave未启动,Slave_IO_Running为No.

    可能会是B的master的信息有变化,

    查看B SHOW MASTER STATUS;

    记录下File,Position字段.假设为'test202-bin.000001',98 ;

    在A下执行:

    mysql>Stop Slave;

    mysql>CHANGE MASTER TO

    mysql>MASTER_LOG_FILE = ' test202-bin.000001',

    mysql>MASTER_LOG_POS = 98 ;

    mysql>Start Slave;

    5,SET GLOBAL SQL_SLAVE_SKIP_COUNTER =n;

    如果A的Slave_SQL_Running为No.

    Err文件中记录:

    Slave: Error 'Duplicate entry '1' for key 1' on query....

    可能是master未向slave同步成功,但slave中已经有了记录。造成的冲突.

    可以在A上执行

    SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

    start salve;就可以了。

    如果Slave_SQL_Running仍然为No.可以考虑试一下如下步骤:

    1,把B机器上的ser数据库中删除上面Err文件中提到的表中的数据。

    2,把两台机器上的/var/lib/mysql/文件夹中的master.info,relay-log.info,机器名开头的文件删除。

    3,重启mysql。

    展开全文
  • Mysql-5.6.17双机互备部署方案,对双机互备原理做了详解,每一步都亲测有效,按照文档逐步执行即可完成。现网主要用于cachecloud-mysql数据库的热备。有一次主mysql数据库挂了,还好有互备,减轻的重新配置的负担。
  • 双机互备高可用方案

    2020-03-04 09:34:53
    IBM 双机互备高可用方案,建立在高性能,高可靠性,易于管理的x86服务器的基础上。为了能够满足不同的成本要求,提供了两套硬件方案,第一套方案成本较低,尽管其可靠性已经比单机系统提高了很多,但由于其采用的...
  • MySQL 数据同步双机互备

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    在这个大数据的时代,数据的安全性是不得不考虑的一个问题。鸡蛋放在一个篮子里面,一旦篮子翻了,所有鸡蛋都毁了;同样的,数据如果只放在一台服务器中,一旦机器死机,数据不可避免的将要丢失,整个系统陷入瘫痪。所以数据的备份至关重要。

    本 Chat 将会介绍下如何实现两台服务器上的 MySQL 数据实时同步,互为主备。通过这次 Chat,您将会学会以下内容:

    1. Linux 上 MySQL 的安装;
    2. Linux 下 MySQL 的基本使用;
    3. 在两台服务器上配置 MySQL 数据同步;
    4. 数据实时同步的测试(为方便,使用 Navicat 工具);
    5. 配置数据同步过程中的问题解决方式。

    前言

    在这个大数据的时代,数据的安全性是不得不考虑的一个问题。鸡蛋放在一个篮子里面,一旦篮子翻了,所有鸡蛋都毁了,也就没有鸡蛋可吃了;同样的,数据如果只放在一台服务器中,一旦机器死机,数据不可避免的将要丢失,整个系统陷入瘫痪。所以数据的备份至关重要。

    本 Chat 将会介绍下如何实现两台服务器上的 MySQL 数据实时同步,互为主备。通过这次 Chat,您将会学会以下内容:

    1.LinuxMySQL 的安装;2.LinuxMySQL 的基本使用;3.在两台服务器上配置 MySQL 数据同步;4.数据实时同步的测试(为方便,使用 Navicat 工具);5.配置数据同步过程中的问题解决方式。

    Linux 下 MySQL 的安装

    (1)查看系统版本
        [root@sts ~]# uname -a    Linux sts 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    (2)下载 mysql 之前,请先确认是否已安装 mysql,若已安装,确认下是否需要重新安装

    检查是否安装 mysql:

        rpm -qa |grep mysql    mysql-community-libs-5.7.23-1.el7.x86_64    mysql57-community-release-el7-10.noarch    mysql-community-client-5.7.23-1.el7.x86_64    mysql-community-server-5.7.23-1.el7.x86_64    mysql-community-common-5.7.23-1.el7.x86_64    mysql-community-libs-compat-5.7.23-1.el7.x86_64

    可以看到已经安装 mysql,如需重新安装,请将上述命令查询出结果一一卸载,卸载前请停止 mysql 服务:

        service mysqld stop     //停止mysql服务    rpm -e --nodeps +包名    //卸载对应服务
    (3)去 mysql 官网下载适合的 mysql 版本进行下载:

    MySQL官网

    我选择的是 mysql5.7 版本的,所以先跳转到 5.7 版本 mysql 页面:

    enter image description here

    选择对应的 mysql 版本信息:

    enter image description here

    选择具体的包进行下载:

    enter image description here

    第一个包为 mysql 的各部分组件安装的 rpm 压缩包,下载后解压会有以下列表:

        -rw-r--r--  1 7155 31415  23901968 3月   5 10:24 mysql-community-client-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415    339860 3月   5 10:24 mysql-community-common-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415   3715796 3月   5 10:24 mysql-community-devel-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415  39466536 3月   5 10:24 mysql-community-embedded-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415 137541708 3月   5 10:24 mysql-community-embedded-devel-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415   2177784 3月   5 10:24 mysql-community-libs-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415   1723716 3月   5 10:24 mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415 160384292 3月   5 10:24 mysql-community-server-5.7.23-1.el7.x86_64.rpm

    各包之间存在依赖关系,安装时需要注意各包的安装顺序。安装顺序为 common–>libs–>client–>server->devel->libs-compat,其中 libs-compat 为 hue 安装需要依赖的包,若不安装,hue 安装会报错,本 chat 暂不涉及。

    第二个下载项为 mysql server 安装包,若其他依赖组件已安装,可下载这个,本文使用第一种方式进行安装。

    (4)下载安装包

    下载安装包可通过两种方式下载:本地下载上传到服务器以及直接服务器下载,若服务器配置可以以及网络环境良好可选择直接在服务器进行下载,我选择的是本地下载然后上传到服务器。

    (服务器直接下载:使用 wget  命令)点击下载之后,会出现提示登录注册的界面,在这个界面左下角会有 ‘ No thanks,just start my download ’,点击跳过登录,直接开始下载:

    enter image description here

    (5)下载完成后,将下载好的安装包上传到服务器上,上传目录自定义
        [root@sts /usr/local/drp/mysql]# ll    total 168960    -rw-r--r-- 1 root root 173011196 Jun 11 11:21 mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
    (6)解压 mysql 安装包
            tar -xvf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar         //解压之后        -rw-r--r--  1 7155 31415  23901968 3月   5 10:24 mysql-community-client-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415    339860 3月   5 10:24 mysql-community-common-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415   3715796 3月   5 10:24 mysql-community-devel-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415  39466536 3月   5 10:24 mysql-community-embedded-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415 137541708 3月   5 10:24 mysql-community-embedded-devel-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415   2177784 3月   5 10:24 mysql-community-libs-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415   1723716 3月   5 10:24 mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm    -rw-r--r--  1 7155 31415 160384292 3月   5 10:24 mysql-community-server-5.7.23-1.el7.x86_64.rpm
    (7)安装 mysql

    将上述包按 common–>libs–>client–>server->devel->libs-compat 顺序进行安装:

        rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm    rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm    rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm    rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm    rpm -ivh mysql-community-embedded-devel-5.7.23-1.el7.x86_64.rpm    rpm -ivh mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm
    (8)启动 mysql

    systemctl start  mysqld.service

    查看 mysql 状态

        systemctl status  mysqld.service    ● mysqld.service - MySQL Server    Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)    Active: active (running) since Thu 2018-07-19 15:21:44 CST; 2 weeks 4 days ago     Docs: man:mysqld(8)     http://dev.mysql.com/doc/refman/en/using-systemd.html     Main PID: 979 (mysqld)     CGroup: /system.slice/mysqld.service     └─979 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid     Jul 19 15:21:41 sts systemd[1]: Starting MySQL Server...     Jul 19 15:21:44 sts systemd[1]: Started MySQL Server.
    (9)修改 mysql 初始密码

    1、先修改配置文件 /etc/my.cnf 令 MySQL 跳过登录时的权限检验,在 [mysqld] 下加入一行:

    skip-grant-tables

    2、重启 MySQL

    systemctl restart mysqld.service

    3、免密码登录 MySQL

    直接输入mysql  回车,进入mysql

    mysql>  use mysql;mysql> UPDATE user SET authentication_string = password('your-password') WHERE host = 'localhost' AND user = 'root';mysql> select host,user, authentication_string, password_expired from user; mysql> update user set password_expired='N' where password_expired='Y' //密码不过期mysql> update user set host='%' where user='root' and host='localhost'; //远程可访问mysql> flush privileges; //刷新mysql> exit;//退出

    4、去掉 /etc/my.conf 中添加的 skip-grant-tables,重启 mysql

    5、输入用户名密码登录 mysql:

    mysql -u+用户名 -p+密码

    成功登录即密码修改成功,到此 mysql 的安装讲解完毕

    注:修改密码时可能会出现修改不成功的现象,提示密码强度太弱,这是由于 mysql 开启密码强度校验,可通过在 /etc/my.conf 的 [mysqld] 下添加 validate_password = off 关闭密码校验,也可参考 https://blog.csdn.net/maxsky/article/details/51171474 进行拦截设置。

    mysql 的简单使用

    (1)查看当前所有数据库
        mysql>show databases    +--------------------+    | Database           |    +--------------------+    | information_schema |    | alarms             |    | dashboard          |    | drp_db             |    | falcon_portal      |    | graph              |    | hive               |    | mysql              |    | performance_schema |    | sys                |    | uic                |    +--------------------+    11 rows in set (0.07 sec)
    (2)创建新的数据库
        mysql> create database my_new_db;    Query OK, 1 row affected (0.08 sec)

    使用 show databases;即可查看到自己刚刚建立的数据库。

    (3)使用数据库并在其中创建表
        mysql> create table my_test_table(        -> id int(10) not null primary key,        -> name varchar(20) ,        -> sex varchar(5),        -> age int(3)        -> );    Query OK, 0 rows affected (0.51 sec)
    (4)向表中插入数据
        mysql> insert into my_test_table (id,name,sex,age) values(1,'小明','男',20);    ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for column 'name' at row 1

    这是由于表中未设置编码格式为 utf-8,修改一下建表语句如下:

        create table my_test_table(        id int(10) not null primary key,        name varchar(20) ,        sex varchar(5),        age int(3)    )ENGINE=InnoDB DEFAULT CHARSET=utf8;

    将表中数据设置为 utf8 编码格式即可。

    或者也可使用:

        ALTER TABLE my_test_table MODIFY COLUMN name VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    将报错字段编码格式设置为 utf8 格式。

    修改之后即可成功插入数据:

        mysql> insert into my_test_table (id,name,sex,age) values(1,'小明','boy',20);    Query OK, 1 row affected (0.03 sec)
    (5)查询数据
        mysql> select * from my_test_table;    +----+--------+------+------+    | id | name   | sex  | age  |    +----+--------+------+------+    |  1 | 小明   | boy  |   20 |    +----+--------+------+------+    1 row in set (0.00 sec)    mysql> select name from my_test_table;    +--------+    | name   |    +--------+    | 小明   |    +--------+    1 row in set (0.00 sec)
    (6)修改数据
        mysql> update my_test_table set name ='小红' where id = 1;    Query OK, 1 row affected (0.05 sec)    Rows matched: 1  Changed: 1  Warnings: 0
        mysql> select * from my_test_table where id = 1;    +----+--------+------+------+    | id | name   | sex  | age  |    +----+--------+------+------+    |  1 | 小红   | boy  |   20 |    +----+--------+------+------+    1 row in set (0.00 sec)    mysql> 
    (7)删除数据

    delete from my_test_table where id = 1;

    数据表的删除操作使用需谨慎,一旦删除不可还原,删除时必须加上必要的条件,否则会将期望保留的数据也给删掉。

    (8)删除数据库
        mysql> drop database my_new_db;    Query OK, 1 row affected (0.08 sec)

    同样的,删除数据库时也需要格外小心,要保证内部的表中数据都不需要了方可删除。

    以上就是 linux 下 mysql 的简单操作。

    mysql 双主机数据同步

    该模块为本 chat 的核心内容。废话少说,直接开始。

    (1)前期准备

    服务器(至少两台):10.168.1.44、10.168.0.126运行环境: centos7mysql 版本:5.7.22

    注:数据同步的前提要保证同步的服务器之间可以互相 ping 通。

    (2)修改 mysql 配置文件

    在 10.168.1.44 服务器 /etc/my.conf 配置文件中添加:

    server_id=10log-bin=master_01    //开启二进制日志,作用是另一个服务器可以

    通过该日志来确定执行操作

    binlog-do-db=test_db  //同步的库binlog-do-db=my_test  //同步的库

    在 10.168.0.126 服务器 /etc/my.conf 配置文件中添加:

    server_id=20log-bin=master_02    //开启二进制日志,作用是另一个服务器可以

    通过该日志来确定执行操作:

    binlog-do-db=test_db  //同步的库binlog-do-db=my_test  //同步的库

    添加之后执行命令 systemctl restart  mysqld.service 重启数据库使修改生效。

    上述参数解析:

    1. server_ id 为当前 mysql 服务的识别 ID,必须唯一。
    2. log - bin 开启二进制日志,每次数据操作都会将操作日志记录在里面,以便从服务可以通过日志确定执行了什么操作。
    3. bin - do - db  需要同步的数据库,如果有多个数据库需要同步,写多行。binlog - do - db = db1,db2,db3... 这种写法是错误的,不会达到预期效果
    (3)添加 mysql 账户,用户数据复制

    添加 mysql 账户,通过给其授权用户执行数据同步:

    10.168.1.44执行命令:GRANT FILE ON *.* TO 'copyuser'@'10.168.0.126' IDENTIFIED BY 'sts@123';GRANT REPLICATION SLAVE ON *.* TO 'copyuser'@'10.168.0.126' IDENTIFIED BY 'sts@123';flush privileges;10.168.0.126执行命令:GRANT FILE ON *.* TO 'copyuser'@'10.168.1.44' IDENTIFIED BY 'sts@123';GRANT REPLICATION SLAVE ON *.* TO 'copyuser'@'10.168.1.44' IDENTIFIED BY 'sts@123';flush privileges;
    (4)配置从数据库

    分别在两台服务器上进入 mysql,输入 show master status; 命令查看当前主机的状态:

        mysql> show master status;    +------------------+----------+-----------------+------------------+-------------------+    | File             | Position | Binlog_Do_DB    | Binlog_Ignore_DB | Executed_Gtid_Set |    +------------------+----------+-----------------+------------------+-------------------+    | master_01.000008 |      749 | test_db,my_test |                  |                   |    +------------------+----------+-----------------+------------------+-------------------+    1 row in set (0.00 sec)

    记录下此时的 file 名以及 position;

    在 10.168.1.44 执行:

        mysql>CHANGE MASTER TO    MASTER_HOST='10.168.0.126',   //所要同步的服务器ip    MASTER_USER='copyuser',     //同步服务器的mysql用户名    MASTER_PASSWORD='sts@123', //同步服务器的mysql密码,与上面创建时的密码要匹配    MASTER_PORT=3306,    MASTER_LOG_FILE='master_02.000002',   //对应10.168.0.126的file名    MASTER_LOG_POS=1771,      //对应10.168.0.126的position    MASTER_CONNECT_RETRY=10;    在

    10.168.0.126 执行:

        mysql>CHANGE MASTER TO    MASTER_HOST='10.168.1.44',    MASTER_USER='copyuser',    MASTER_PASSWORD='sts@123',    MASTER_PORT=3306,    MASTER_LOG_FILE='master_01.000008',     //对应10.168.1.44的file名    MASTER_LOG_POS=154,            //对应10.168.0.126的position    MASTER_CONNECT_RETRY=10;

    注:若 slave 开启状态无法执行以上命令,需要首先执行 stop slave;关闭 slave,执行完上述命令后执行 start slave;命令开启 slave。

    上述命令执行完后,查看从服务状态:

    执行命令 show slave status\G:

    enter image description here

    Slave_IO_Running:  指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。

    Slave_SQL_Running:指的就是专门执行 sql 的线程。它负责把复制回来的 Relaylog 执行到自己的数据库中。 这两个参数必须都为Yes 才表明复制在正常工作。

    到这里,mysql 同步配置已完成,接下来测试下数据是否能正常实时同步。

    测试数据同步

    为方便操作,本次测试使用第三方工具 Navicat Premium 连接两个数据库测试数据的同步。

    (1)配置连接两个数据库

    enter image description here

    (2)在10.168.0.126 的 my_ test 数据库中创建表 test_  table:

    enter image description here

    查看 10.168.1.44 的数据库 my_ test,会发现  test_ table 表自动同步创建:

    enter image description here

    (若找不到,在表一栏右键刷新即可)。

    (3)在 10.168.1.44 上向 test_table 插入一条数据:

    enter image description here

    回到 10.168.0.126,查看 test_table 表中数据,会发现数据已同步过来:

    enter image description here

    到此,两台服务器上的 mysql 数据同步已测试完成。

    可能出现的问题

    1.查看 slave 状态时,会发现 Slave_IO_Running: Connecting

    出现该问题主要有三个原因:

    A.网络不通(互相 ping下试试看能否ping通)
    B.密码不对:查看在配置 slave 时执行的命令中的密码是否正确
    C.Position 不正确:配置 slave 时对应 position 未填为正确的position(查看对应从服务器数据库的 master 状态:show master status 即可找到 )   

    我出现这个问题的原因是只在一个服务器上创建了用于同步数据的用户 ‘copyuser’,另一个服务器数据库中并未创建该用户。创建之后 OK 了。

    2.查看 slave 状态时,会发现 Slave_SQL_Running: No

    出现这个现象的原因主要就是两边数据库数据存在不同之处,也就是同步时没有相同的初态,可以通过查看 mysql 日志定位具体哪块数据出现异常(详细参考下面备注)。

    Mysql 日志一般在 /var/log/mysqld.log

    需要注意的是,如果你只配置了从数据库同步主数据库数据,而未设置为互相同步    ,修改从数据库数据可能会导致同步失效。

    备注

    数据同步,一般需要是在同样的初态下进行同步,这样才有意义。所谓同样的初态指的是同步之前两服务器所要同步的数据库中数据完全一致,这样才能保证同步之后两数据库数据的一致,否则,同步过程中会发生各种各样的问题,诸如A中修改了表 a 的数据,而 B 中并未找到 a 表,虽然读取到了日志,但并不能成功执行,导致同步失败。如何实现同样的初态环境呢?

    (1)导出数据

    导出数据的时候,最好在 mysql 下执行命令 FLUSH TABLES WITH READ LOCK; 将数据库上写锁,禁止数据的写入,完成之后,再释放锁:UNLOCK TABLES;

        [root@cdh-1 mysql]# mysqldump --master-data -uroot -p my_test > my_test.sql    Enter password:     [root@cdh-1 mysql]# ll    总用量 4    -rw-r--r-- 1 root root 2927 8月   7 15:47 my_test.sql

    如果有多个数据库需要同步,需要将多个数据库都导出来一份。

    (2)在从服务器上导入数据
    1. 将主服务器上导出的 sql 文件传到从服务器 :   

      scp my_test.sql 10.168.0.126:/mysql/`
    2. my_test.sql 中的数据导入进来,若从服务器没有 my_test 库,创建;若有,清楚内部数据,然后执行:mysql -uroot -p my_test < my_test.sql

    这样就保证两个服务器的 my_test 库拥有同样的初态了。

    如果有多个数据库需要同步,逐一按照上面步骤操作即可。

    结尾语

    以上就是关于 mysql 双机热备的具体配置以及测试信息,希望能给大家带来帮助,若有什么不足的地方,欢迎大家指正。我是小闲,一个正在爬坑的程序猿。


    本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。

    阅读全文: http://gitbook.cn/gitchat/activity/5b62c9c9eec42f4dac6fe5c9

    一场场看太麻烦?订阅GitChat体验卡,畅享300场chat文章!更有CSDN下载、CSDN学院等超划算会员权益!点击查看

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 双机互备=主机(备机)+备机(主机) 简单理解:部分应用运行于主机,部分应用运行于备机 双机双工=主机+主机 简单理解:两台机器同时运行应用 第一种,备机不工作,主机出现故障时备机接管主机的所有工作 第二、三...
  • 对于实现两台机子的互备配置,本文作出了详细的介绍,之后的测试数据同步,在10.168.1.44服务器数据库里修改一条数据, 可以看到数据已经同步过来了。反过来,修改10.168.0.126的数据,也可以看到10.168.1.44数据库...
  • 软件安装:装机软件必备包SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。...对于实现两台机子的互备配置,本文作出了详细的介绍,之后...
  • 双机热备、双机互备、双机双工之间的区别 双机热备=主机+备机 简单理解:主要应用运行于主机,备机即备用机器 备机不工作,主机出现故障时备机接管主机的所有工作 备机不运行应用,处于等待状态 两台server...
  • 详细的MYsql双机互备实施方案及配置步骤。
  • MySQL双机互备的实现1、MySQL数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好MySQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL...
  • 在生产应用中,某台“Nginx+PHP+MySQL”接口数据服务器,扮演的角色十分重要,如果服务器硬件或...为了避免单点故障,我设计了此套方案,编写了failover.sh脚本,实现了双机互备、全自动切换,故障转移时间只需几十秒。
  • oracle 10g 双机互备

    2008-04-22 09:11:46
    oracle 10g 双机互备
  • 由于keepalived 切换速度极其快,所以就把流量小的站换成了 双机互备份,也在昨天有人在群里问我是如何配置的,其实很简单,由于双机互备,也就不需要关什么arp 呵呵看我操作吧。 vip 192.168.6.7 nginx1 192.168.6....
  • 双机热备、双机互备与 双机双工的区别 双机热备即是目前通常所说的active/standby方式,服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。当active服务器出现故障的时候,通过软件...
  • 主机A(二期MySQL01):172.25.48.169,mysql Ver14.14 Distrib 5.7.19, for Linux (x86_64) usingEditLine wrapper主机B(二期MySQL01):172.25.48.170mysql Ver14.14 Distrib 5.7.19, for Linux (x86_64) using...
  • MYSQL主从热备及双机互备操作步骤及问题:-----------------------------------------------------------一、获取IP,检查网络连接状态1. ifconfig/ipconfig测试: 主机A:192.168.3.10 从机B:192.168.3.112. ping二...
  • 双机热备即是目前通常所说的active/standby方式,服务器数据包括数据库数据同时往两台或多台... 双机互备,在双机热备的基础上,两个相对独立的应用在两台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,
  • mysql的实时同步-双机互备

    千次阅读 2017-04-10 16:13:36
    安装mysql的实时同步-双机互备 设置方法:  1:  A 服务服 (192.168.1.198) 上 用户为 root, 123456 , 同步的数据库为test;  B 服务服 (192.168.1.62) 上 用户为 root, 123456, 同步的数据库为test;    2:...
  • 在生产应用中,某台“Nginx+PHP+MySQL”接口数据服务器,扮演的角色十分重要,如果服务器硬件...为了避免单点故障,我设计了此套方案,编写了failover.sh脚本,实现了双机互备、全自动切换,故障转移时间只需几十秒...
  • 双机互备=主机(备机)+备机(主机) 简单理解:部分应用运行于主机,部分应用运行于备机 双机双工=主机+主机 简单理解:两台机器同时运行应用     第一种,备机不工作,主机出现故障时备机接管主机的...
  • 花了大半天的时间研究mysql 5.0.* ,参考了很多文档,总算将mysql的双机热备给搞定了。心情很好,写个文章纪念一下。因为以后还可能实际用到,所以也作以下笔记。使用两台虚拟机,nod1和nod2,分别设置两块网卡,...
  • 为了防止单点故障,我设计了此套方案,编写了failover.sh脚本,实现了双机互备、全自动切换,故障转移时间只需几十秒。 一、双机互备、全自动切换方案: 1、拓扑图:http://${vip_eth1_share}/ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 416
精华内容 166
关键字:

双机互备