网站:

程序在:web服务器192.168.1.100上面

数据库在:MySQL服务器192.168.1.123上面

实现目的:增加一台MySQL备份服务器(192.168.1.124),作为MySQL服务器(192.168.1.123)的从服务器,这两台MySQL服务器之间实现双机热备。即:从服务器(192.168.1.124)上面指定的数据永远与主服务器(192.168.1.123)上面的指定的数据保持同步,并且随着主服务器(192.168.1.123)上面的指定的数据库的变化而变化。

环境说明 

1、 Web服务器

系统:CentOS 6.5-x64

IP:192.168.21.129

Web环境:apache+php (无)

2、 MySQL主服务器

系统:CentOS 6.5-x64

IP:192.168. 1.123

主机名称:MySQLMaster

MySQL版本:mysql-5.5.22

3、 MySQL从服务器

系统:CentOS 6.5-x64

IP:192.168.1.124

主机名称:MySQLSlave

MySQL版本:mysql-5.5.22

4、 客户机

系统:Windows 7

IP:192.168.21.130

备注:作为主从服务器的MySQL版本建议使用同一版本!或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本(MySQL版本是向下兼容的)

_______________________________________________________________________________

教程开始:

一、            安装MySQL

说明:在两台MySQL服务器192.168.1.123和192.168.1.124上分别进行如下操作,安装MySQL 5.5.22

1、配置防火墙,开启MySQL默认3306端口 

[root@localhost ~]# vi /etc/sysconfig/iptables

#编辑防火墙配置文件:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

[root@localhost ~]# /etc/init.d/iptables restart

#重启防火墙,使配置生效

2、关闭SELINUX

[root@localhost ~]# vi /etc/selinux/config

#SELINUX=enforcing  #注释掉

#SELINUXTYPE=targeted  #注释掉

SELINUX=disabled  #修改,没有就增加

:wq   #保存,关闭

[root@localhost ~]# shutdown -r now  #重启系统

3、安装编译工具 

[root@localhost ~]# yum install wget make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd  kernel keyutils  patch  perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch

4、下载软件包

cd /usr/local/src  #进入软件包下载目录

(1)、下载cmake(MySQL编译工具)

wgethttp://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz

(2)、下载MySQL

wgethttp://mysql.mirror.kangaroot.net/Downloads/MySQL-5.5/mysql-5.5.22.tar.gz

说明:MySQL5.5版本以后需要使用cmake编译安装,可先下载到电脑上用lrzsz上传

[root@localhost src]# yum install -y lrzsz

[root@localhost src]# rz

5、 安装cmake

[root@localhost src]# tar zxvf cmake-2.8.7.tar.gz

[root@localhost src]# cd cmake-2.8.7

[root@localhost cmake-2.8.7]# ./bootstrap

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

第一次安装时候报错如下:

报错:缺少C的编译器

[root@localhost ~]# yum install gcc

继续cmake的安装

[root@localhost cmake-2.8.7]# ./bootstrap

再次报错:缺少C++编译器

[root@localhost ~]# yum install gcc-c++

重复上面的操作

[root@localhost cmake-2.8.7]# ./bootstrap

[root@localhost cmake-2.8.7]# make && make install  #编译并安装

注:检查安装 which cmake看结果可知安装是否正确

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

6、安装mysql 

[root@localhost ~]# groupadd mysql#添加mysql组

[root@localhost ~]# useradd -g mysql mysql -s /bin/false

#创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统

注:[root@localhost ~]# groups mysql查看mysql用户所在的组,以及组内成员

[root@localhost ~]# mkdir -p /data/mysql#创建MySQL数据库存放目录

[root@localhost ~]# chown mysql:mysql /data/mysql –R#设置MySQL数据库目录权限

[root@localhost ~]# mkdir -p /usr/local/mysql#创建MySQL安装目录

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# tar zxvf mysql-5.5.22.tar.gz#解压MySQL

[root@localhost src]# cd mysql-5.5.22

[root@localhost mysql-5.5.22]# cmake .\

>-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

>-DMYSQL_DATADIR=/data/mysql \

>-DSYSCONFDIR=/etc \  #配置

报错:缺少ncurses-devel包

[root@localhost ~]#yum install ncurses-devel

删除CMakeCache.txt文件

[root@localhost ~]# find / -name CMakeCache.txt

[root@localhost ~]# rm –f+绝对路径  #删除查找到的文件即可

重复上面的操作

[root@localhost mysql-5.5.22]# cmake .\

>-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

>-DMYSQL_DATADIR=/data/mysql \

>-DSYSCONFDIR=/etc \  #配置

[root@localhost mysql-5.5.22]# make && make install#编译并安装

[root@localhost ~]# cd /usr/local/mysql

[root@localhost mysql]# cp ./support-files/my-huge.cnf /etc/my.cnf

#拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

[root@localhost mysql]# vi /etc/my.cnf

#编辑配置文件,在 [mysqld] 部分增加

datadir = /data/mysql  #添加MySQL数据库路径(注意=左右的空格)

[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql

#生成mysql系统数据库

[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

#把Mysql加入系统启动

[root@localhost mysql]# chmod 755 /etc/init.d/mysqld  #增加执行权限

[root@localhost mysql]# chkconfig mysqld on  #加入开机启动

[root@localhost mysql]# vi /etc/rc.d/init.d/mysqld

#编辑:basedir = /usr/local/mysql  #MySQL程序安装路径

datadir = /data/mysql  #MySQl数据库存放目录

[root@localhost mysql]# service mysqld start  #启动MySQL

[root@localhost mysql]# vi /etc/profile

#把mysql服务加入系统环境变量

在最后添加下面这一行:export PATH=$PATH:/usr/local/mysql/bin

下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

ln -s /usr/local/mysql/include/mysql /usr/include/mysql

[root@localhost mysql]# reboot

#需要重启系统,等待系统重新启动之后继续在终端命令行下面操作

注:或者使用shutdown –r now 重启系统

[root@localhost ~]# mysql_secure_installation  # MySQL安全配置向导,设置MySQL密码

[root@localhost ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current

password for the root user.  If you've just installed MySQL, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none): <-初次运行直接回车

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

Set root password? [Y/n] y<-是否设置root用户密码,输入y并回车或者直接回车

New password: <-设置root用户密码

Re-enter new password: <-再输入一次你设置的密码

Password updated successfully!

Reloading privilege tables..

... Success!

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y<-是否删除匿名用户,生产环境建议删除

... Success!

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y<-时候禁止root远程登陆,根据自己的需求选择Y/n并回车,建议禁止

... Success!

By default, MySQL comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y<-是否删除test数据库和对test库的访问权限,直接回车

- Dropping test database...

... Success!

- Removing privileges on test database...

... Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] <-是否重新加载权限表,直接回车

... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!

或者直接修改密码

[root@localhost ~]#/usr/local/mysql/bin/mysqladmin –u root –p password ‘123456’

[root@localhost ~]#service mysql restart  #重启MySQL服务

 

到此MySQL安装完成!

二、在Web服务器192.168.21.129中进行以下操作 

上传网站程序到web服务器192.168.21.129的相应目录(我这里的apache默认站点目录是/var/www/html)

登录到Web服务器,执行以下命令

chownapache.apache /var/www/html  -R    #设置网站目录权限

 

三、 配置MySQL主服务器(192.168.1.123)

[root@localhost ~]# mysql -u root -p#进入MySQL控制台

mysql> create database yunweia;#建立数据库yunweia

mysql> insert into mysql.user(Host,User,Password)

-> values('localhost','yunweiuser',password('123456'));#创建用户yunweiuser

mysql> grant all on yunweia.* to 'yunweiuser'@'192.168.21.129' identified by '123456' with grant option;

#授权用户(yunweiuser)从web服务器192.168.21.129完全访问数据库(yunweia)

mysql> insert into mysql.user(Host,User,Password)                 -> values('localhost','yunweib',password('123456'));

#建立MySQL主从数据库同步用户yunweidb密码123456

mysql> flush privileges;#刷新系统授权表

mysql> grant replication slave  on *.* to 'yunweib'@'192.168.1.122' identified by '123456' with grant option;

#授权用户yunweib只能从192.168.1.122这个IP访问主服务器192.168.1.123上面的数据库,并且只具有数据库备份的权限。

四、在客户机Windows 7(192.168.21.130)中进行以下操作

在客户机Windows 7 (192.168.21.130)的浏览器打开http://bbs.osyunwei.com/(bbs.osyunwei.com域名要事先解析到Web服务器192.168.21.129),出现下面的程序安装界面,开始安装-同意协议,下一步:

数据库服务器:192.168.1.123

数据库用户名:yunweiuser

数据库密码:123456

数据库名:yunweia

后面略过!

五、把MySQL主服务器192.168.1.1239中的数据库yunweia导入到MySQL从服务器192.168.1.122中

1、导出数据库yunweia

mysql> show databases;#查看所有库

备注:在导出之前可以先进入MySQL控制台执行下面命令

mysql> flush tables with read lock;

#数据库只读锁定命令,防止导出数据库的时候有数据写入

mysql> unlock tables; #解除锁定

[root@localhost ~]# mysqldump -u root -p yunweia> /home/yunweib.sql

#在MySQL主服务器进行操作,导出数据库yunweia到/home/yunweidb.sql

[root@localhost ~]# scp /home/yunweib.sql root@192.168.1.122:/home/

#把home目录下的yunweidb.sql 数据库文件上传到MySQL从服务器的home目录下面

注:scp –r 文件夹用户@IP:路径 #可以传输文件夹

2、导入数据库到MySQL从服务器

[root@localhost ~]# mysql -u root –p#进入从服务器MySQL控制台

mysql> create database yunweia;#创建数据库yunweia

mysql> use yunweia#进入数据库

mysql> source /home/yunweib.sql   #导入备份文件到数据库

mysql -u osyunweidbbak -h 192.168.21.169 -p  #测试在从服务器上登录到主服务器

注释:可在主服务器(192.168.1.123)上用以下命令查询MySQL数据库中所有用户及拥有权限(两条命令都可以)

mysql> select user,host,password from mysql.user;

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

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

扩展知识:

mysql> show databases;#查看所有表

mysql> select * from mysql.user\G;   #查看所有用户权限

添加用户

grant all on 数据库名.* to 用户名@localhost identified by '密码';

grant all on gamesp.* to newuser@localhost identified by 'password';

添加一个远程用户,名为username密码为password

GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY 'password'

说明:

(1)grant all 赋予所有的权限

(2)gamesp.* 数据库 gamesp 中所有的表

(3)newuser 用户名

(4)@localhost 在本地电脑上的 mysql server 服务器

(5)identfified by 'password' 设置密码

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

 

六、配置MySQL主服务器的my.cnf文件

[root@localhost ~]# vi /etc/my.cnf

#编辑配置文件,在[mysqld]部分添加下面内容:

server-id=1

#设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

log-bin=mysql-bin

#启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就无需添加

binlog-do-db=osyunweidb

#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

binlog-ignore-db=mysql#不同步mysql系统数据库

:wq!#保存退出 (或者大写ZZ)

[root@localhost ~]# service mysqld restart#重启MySQL

[root@localhost ~]# mysql -u root –p#进入mysql控制台

mysql> show master status;查看主服务器,出现以下类似信息

注意:这里记住File的值:mysql-bin.000009和Position的值:107,后面会用到。

 

 

七、配置MySQL从服务器的my.cnf文件

[root@localhost ~]# vi /etc/my.cnf

#编辑配置文件,在[mysqld]部分添加下面内容:

server-id = 2

#配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库

log-bin=mysql-bin

#启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就无需添加

replicate-do-db=osyunweidb

#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

replicate-ignore-db=mysql   #不同步mysql系统数据库

:wq!   #保存退出 (或者大写ZZ)

[root@localhost ~]# service mysqld restart   #重启MySQL

注意:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。

[root@localhost ~]# mysql -u root –p#进入MySQL控制台

mysql> slave stop;#停止slave同步进程

mysql> change master to

-> master_host='192.168.1.123',master_user='yunweidb',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=107; #执行同步语句

mysql> slave start;#开启slave同步进程

mysql> show slave status\G;#查看slave同步信息,出现以下内容

注意查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

以上这两个参数的值为Yes,即说明配置成功!

 

八、测试MySQL主从服务器双机热备是否成功

1、进入MySQL主服务器

[root@localhost ~]# mysql -u root –p#进入MySQL控制台

mysql> use yunweia#进入数据库

mysql> CREATE TABLE test ( id int not null primary key,name char(20) );#创建test表

2、进入MySQL从服务器

[root@localhost ~]# mysql -u root –p#进入MySQL控制台

mysql> use yunweia#进入数据库

mysql> show tables;

#查看yunweia表结构,会看到有一个新建的表test,表示数据库同步成功。

 

至此,MySQL数据库配置主从服务器实现双机热备实例教程完成!

MySQL主从详细安装步骤的更多相关文章

  1. LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等)

    LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等) linux详细版本为RHEL5.3 [root@localhost mail]# un ...

  2. Linux详细安装步骤

    Linux详细安装步骤(CentOS_6.7_64位) 1.先安装好VMware10软件 2.验证VM是否安装成功: (有些机器在安装vmware的时候会出现一个错误:virtual XT,这需要重启 ...

  3. --nodejs详细安装步骤

    什么是nodejs? 脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入html的js语言,浏览器是它的解析器角色.而对于需要独立运行的JS,node ...

  4. Windows下Oracle安装图解----oracle-win-64-11g 详细安装步骤

    一. Oracle 下载 官方下地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.htm ...

  5. MySql绿色版安装步骤和方法,以及配置文件修改,Mysql服务器启动

    MySql绿色版Windows安装步骤和方法,以及配置文件修改,Mysql服务器启动 支持“标准”Markdown / CommonMark和Github风格的语法,也可变身为代码编辑器: 支持实时预 ...

  6. MySQL基础 — 详细安装

    MySQL--安装 打开MySQL 5.5 安装文件开始: 点击Next 打上勾,再点击Next 点击Custom,说明如下: Typical(典型安装)        Installs the mo ...

  7. Anaconda的详细安装步骤图文并茂

    Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本.Anaconda包含了conda.Python在内的超过180个科学包及其依赖项. 事实上Anaco ...

  8. Oracle(11g)详细安装步骤

     最详细的Oracle安装步骤就在这里,话不多说直接给大家上安装Oracle的详细教程  如果没有安装包,可以先点击下载下载地址:http://download.oracle.com/otn/nt/o ...

  9. 如何搭建SVN服务器,详细安装步骤。

    SVN服务器端安装 下载: VisualSVN是一款图形化svn服务器.官网 http://www.visualsvn.com/server/ 下载地址: http://www.visualsvn.c ...

随机推荐

  1. Spring在Bean中注入集合

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/injecting-collection.html: 如果你想传递多个值,如Java Collect ...

  2. HTML5 这些你全知道吗?

    今天心情烦躁,搭建个论坛各种失败,Laravel.React也学不进去,于是就复习复习学过的.记录一下很少用的东西. 代码摘抄于W3C菜鸟教程HTML5手册 # 定义文本方向 <element ...

  3. Shiro源代码分析之两种Session的方式

    1.Shiro默认的Session处理方式 <!-- 定义 Shiro 主要业务对象 --> <bean id="securityManager" class=& ...

  4. 在智能手机上跟踪ADS-B系统的飞机航线信息

    飞机飞行的中断可能会给航空公司造成数十亿美员的损失,但即便如此大多数现代商业航班仍旧依赖于存有严重安全问题的空中交通管制系统.到2020年,这些系统将会被升级为一个被称之为NextGen的系统,该系统 ...

  5. mock.js 的用法 -- 脱离后端独立开发,实现增删改查功能

    在我们的生产实际中,后端的接口往往是较晚才会出来,并且还要写接口文档,于是我们的前端的许多开发都要等到接口给我们才能进行,这样对于我们前端来说显得十分的被动,于是有没有可以制造假数据来模拟后端接口呢, ...

  6. LInux查看CPU状态

    1.htop 2.top 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SH ...

  7. c程序设计语言第一章1

    1,c程序都是由函数和变量组成的. 练习1.6验证布尔表达式getchar()!= EOF的取值是0还是1 答: #include <stdio.h> #include <stdli ...

  8. 网页JS简繁体字转换

    用法:非得加上html头 utf-8编码 其它编码无测试 head 中引用 <script language='javascript' src='zh.js'></script> ...

  9. UUID GUID

    http://baike.baidu.com/link?url=xkck9gR5bzOx0oBKP1qNJwGGq3IO56V4i8cg9zTSpSDMVBMA0F7jr0AdkQTGyk7F0FGj ...

  10. v-for指令

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...