Mysql双机热备安装文档

Mysql双机热备安装文档
1. 安装环境和资源
211.88.22.74 4CPU 8G 120G硬盘 centos6.5_64
211.88.22.73 4CPU 8G 120G硬盘 centos6.5_64
服务器两台。这里使用211.88.22.74作为主服务器,211.88.22.73作为从服务器。
1.1 mysql下载地址
a. 官方下载地址:
http://dev.mysql.com/downloads/mysql/#downloads
或镜像文件下载:
http://dev.mysql.com/downloads/mirrors.html
本例安装使用的是:mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz。

  1. liunx上安装mysql
    2.1安装步骤:
    安装MySQL主要有两种方法:一种是通过源码自行编译安装,这种适合高级用户定制MySQL的特性,这里不做说明;另一种是通过编译过的二进制文件进行 安装。二进制文件安装的方法又分为两种:一种是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件;第二种是使用RPM或 其他包进行安装,这种安装进程会自动完成系统的相关配置,所以比较方便。
    a. 通用安装方法
    mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz
    b.RPM安装方法:
    mysql-5.6.12-linux-glibc2.5-x86_64.rpm
    mysql-5.6.12-linux-glibc2.5-x86_64.rpm
    2.1.1 通用安装步骤
     检查是否已安装,grep的-i选项表示匹配时忽略大小写
    [root@cloudview73 ~]#rpm -qa|grep -i mysql
    mysql-libs-5.1.61-4.el6.x86_64
    *可见已经安装了库文件,应该先卸载,不然会出现覆盖错误。注意卸:载时使用了–nodeps选项,忽略了依赖关系:
    [root@cloudview73 ~]#rpm -e mysql-libs-5.1.61-4.el6.x86_64 –nodeps
     添加mysql组和mysql用户,用于设置mysql安装目录文件所有者和所属组。
    [root@cloudview73 ~]#groupadd mysql
    [root@cloudview73 ~]#useradd -r -g mysql mysql
    *useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
     将二进制文件解压到指定的安装目录,我们这里指定为/usr/local
    [root@cloudview73 ~]# cd/usr/local/
    [ncp@cloudview73 local]$ tar -zxvf mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz

    *加压后在/usr/local/生成了解压后的文件夹mysql-5.6.12-linux-glibc2.5-x86_64,这名字太长,我们为它建立一个符号链接mysql,方便输入。
    [root@cloudview73 ~]#ln -s mysql-5.6.12-linux-glibc2.5-x86_64 mysql

     /usr/local/mysql/下的目录结构

     进入mysql文件夹,也就是mysql所在的目录,并更改所属的组和用户。
    [ncp@cloudview73 local]cdmysql[ncp@cloudview73local] chown -R mysql .
    [ncp@cloudview73 local]$ chgrp -R mysql .
    注意:后面的那个点不要忘了,否则会报错。
     执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。注意 mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(就是我们之前设置的mysql用户)执行这个脚本,或 者用root执行,但是加上参数–user=mysql。
    [root@localhost mysql]scripts/mysql_install_db –user=mysql
    *如果mysql的安装目录(解压目录)不是/usr/local/mysql,那么还必须指定目录参数,如
    [root@localhost mysql]scripts/mysql_install_db –user=mysql \
    –basedir=/opt/mysql/mysql \
    –datadir=/opt/mysql/mysql/data
    *将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。
    [root@localhost mysql]chown -R root .
    [root@localhost mysql]chown -R mysql data
     复制配置文件
    [root@localhost mysql] cp support-files/my-default.cnf /ect/my.cnf
     将mysqld服务加入开机自启动项。
    *首先需要将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。
    [root@localhostmysql] cp support-files/mysql.server /etc/init.d/mysqld
    *通过chkconfig命令将mysqld服务加入到自启动服务项中。
    [root@localhost mysql]#chkconfig –add mysqld
    *注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。
    *查看是否添加成功
    [root@localhost mysql]#chkconfig –list mysqld

mysqld 0:off
1:off 2:on 3:on 4:on 5:on 6:off
i. 重启系统,mysqld就会自动启动了。
*检查是否启动

root@localhost mysql]#netstat -anp|grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2365/mysqld
unix 2 [ ACC ] STREAM LISTENING 14396 2365/mysqld /tmp/mysql.sock
*如果不想重新启动,那可以直接手动启动。
[root@localhost mysql]#service mysqld start
Starting MySQL.. SUCCESS!
j. 运行客户端程序mysql,在mysql/bin目录中,测试能否连接到mysqld。
[root@localhost mysql]#/usr/local/mysql/bin/mysql
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 2
Server version:5.5.29-log MySQL Community Server (GPL)

Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
Oracle is a registeredtrademark of Oracle Corporation and/or its affiliates. Other names may betrademarks of their respective owners.
Type ‘help;’ or ‘\h’ forhelp. Type ‘\c’ to clear the current input statement.
mysql> quit
Bye
*此时会出现mysql>命令提示符,可以输入sql语句,输入quit或exit退出。为了避免每次都输入mysql的全路径/usr/local/mysql/bin/mysql,可将其加入环境变量中,在/etc/profile最后加入两行命令:
MYSQL_HOME=/usr/local/mysql
export PATH=PATH:MYSQL_HOME/bin
这样就可以在shell中直接输入mysql命令来启动客户端程序了
[root@localhost mysql]#mysql
Welcome to the MySQLmonitor. Commands end with ; or \g.
Your MySQL connection idis 3
Server version:5.5.29-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
Oracle is a registeredtrademark of Oracle Corporation and/or its
affiliates. Other namesmay be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ forhelp. Type ‘\c’ to clear the current input statement.
mysql>
 源码包到此安装完毕。
3. rpm方式安装mysql
4. 检查是否已安装,grep的-i选项表示匹配时忽略大小写
5. [root@localhost JavaEE]#rpm -qa|grep -i mysql
6. mysql-libs-5.1.61-4.el6.x86_64
7. 可见已经安装了库文件,应该先卸载,不然会出现覆盖错误。注意卸载时使用了–nodeps选项,忽略了依赖关系:
8. [root@localhost JavaEE]#rpm -e mysql-libs-5.1.61-4.el6.x86_64 –nodeps
9. 2. 安装MySQL的服务器端软件,注意切换到root用户:
10. [root@localhost JavaEE]#rpm –ivh
MySQL-server-5.6.12-2.el6.x86_64.rpm安装完成后,安装进程会在Linux中添加一个mysql组,以及属于mysql组的用户mysql。可通过id命令查看:
11. [root@localhost JavaEE]#id mysql
12. uid=496(mysql)gid=493(mysql) groups=493(mysql)
13. MySQL服务器安装之后虽然配置了相关文件,但并没有自动启动mysqld服务,需自行启动:
14. [root@localhost JavaEE]#service mysql start
15. Starting MySQL.. SUCCESS!
16. 可通过检查端口是否开启来查看MySQL是否正常启动:
17. [root@localhost JavaEE]#netstat -anp|grep 3306
18. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 34693/mysqld
19. c. 安装MySQL的客户端软件:
20. [root@localhost JavaEE]#rpm -ivh MySQL-client-5.6.12-6.x86_64.rpm
21. 如果安装成功应该可以运行mysql命令,注意必须是mysqld服务以及开启:
22. [root@localhost JavaEE]#mysql
23. Welcome to the MySQLmonitor. Commands end with ; or \g.
24. Your MySQL connection idis 1
25. Server version: 5.5.29MySQL Community Server (GPL)
26. Copyright (c) 2000, 2012,Oracle and/or its affiliates. All rights reserved.
27. Oracle is a registered trademarkof Oracle Corporation and/or its affiliates. Other names may be trademarks oftheir respective owners.
28. Type ‘help;’ or ‘\h’ forhelp. Type ‘\c’ to clear the current input statement.
29. mysql>

 RPM安装方式文件分布

JAVA双机热备应用中 双机热备数据库怎么装_JAVA双机热备应用中


到此mysql安装完毕。主服务器和从服务器两台机器都安装上mysql。4.开始主从设置

配置MySQL主服务器(211.88.22.74)

进入mysql操作界面,在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进行双机热备的功能操作。

操作指令如下:

mysql> grant replication slave on . to ‘iec’@’ 211.88.22.74’ identified by ‘iec2016

mysql> flush privileges;

创建好同步连接帐户后,我们可以通过在从服务器(Slave)上用replicat帐户对主服务器(Master)数据库进行访问下,看下是否能连接成功。

在从服务器(Slave)上输入如下指令:

[root@YD146 ~]# mysql -h 211.88.22.74 -uiec –piec2016

如果出现下面的结果,则表示能登录成功,说明可以对这两台服务器进行双机热备进行操作。

JAVA双机热备应用中 双机热备数据库怎么装_科技_02


 修改mysql配置文件

如果上面的准备工作做好,那边我们就可以进行对mysql配置文件进行修改了,首先找到mysql配置所有在目录,一般在安装好mysql服务后,都会将配置文件复制一一份出来放到/ect目录下面,并且配置文件命名为:my.cnf。即配置文件准确目录为/etc/my.cnf

找到配置文件my.cnf打开后,在[mysqld]下修改即可:

server-id = 1

log-bin=mysql-bin //其中这两行是本来就有的,可以不用动,添加下面两行即可

binlog-do-db = cieccNcp

binlog-ignore-db = mysql

JAVA双机热备应用中 双机热备数据库怎么装_centos_03

 重启mysql服务

修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。

JAVA双机热备应用中 双机热备数据库怎么装_mysql_04


 查看主服务器状态

进入mysql服务后,可通过指令查看Master状态,输入如下指令:

JAVA双机热备应用中 双机热备数据库怎么装_服务器_05


注意看里面的参数,特别前面两个File和Position,在从服务器(Slave)配置主从关系会有用到的。

注:这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。

JAVA双机热备应用中 双机热备数据库怎么装_服务器_06


从服务器Slave配置

修改配置文件

因为这里面是以主-从方式实现mysql双机热备的,所以在从服务器就不用在建立同步帐户了,直接打开配置文件my.cnf进行修改即可,道理还是同修改主服务器上的一样,只不过需要修改的参数不一样而已。如下:

[mysqld]

server-id = 2

log-bin=mysql-bin

replicate-do-db =cieccNcp

replicate-ignore-db = mysql

重启mysql服务

JAVA双机热备应用中 双机热备数据库怎么装_centos_07


 用change mster 语句指定同步位置

这步是最关键的一步了,在进入mysql操作界面后,输入如下指令:

mysql>stop slave; //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。

mysql>change master to

master_host=’211.88.22.74’,master_user=’iec’,master_password=’iec2016’,
master_log_file=’ mysql-bin.000016 ‘,master_log_pos=107;
注:master_log_file, master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。
遇到的问题,如果按上面步骤之后还出现如下情况:

则要重新设置slave。指令如下

mysql>stop slave;

mysql>reset slave;

之后停止slave线程重新开始。成功后,则可以开启slave线程了。

mysql>start slave;

 查看从服务器(Slave)状态

出现如图下红框中的状态表示配置成功。

JAVA双机热备应用中 双机热备数据库怎么装_科技_08

查看下面两项值均为Yes,即表示设置从服务器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
到此主备配置完毕。下面测试一下。
测试同步

之前开始已经说过了在数据库cieccNcp只有一个表tb_mobile没有数据,我们可以先查看下两服务器的数据库是否有数据:

主服务器上:211.88.22.74

JAVA双机热备应用中 双机热备数据库怎么装_JAVA双机热备应用中_09

从服务器上:211.88.22.73

JAVA双机热备应用中 双机热备数据库怎么装_服务器_10


现在主从服务器上都是空的。

我们在主服务器上插入一条数据看看是否同步:

JAVA双机热备应用中 双机热备数据库怎么装_mysql_11


下面我们在看下从服务器上有没有备份这条数据:

JAVA双机热备应用中 双机热备数据库怎么装_JAVA双机热备应用中_12


可以从上面两个截图上看出,在Master服务器上进行插入的数据在Slave服务器可以查到,这就表示双机热备配置成功了。