MySQL主从详细安装步骤
网站:
程序在: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主从详细安装步骤的更多相关文章
- LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等)
LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等) linux详细版本为RHEL5.3 [root@localhost mail]# un ...
- Linux详细安装步骤
Linux详细安装步骤(CentOS_6.7_64位) 1.先安装好VMware10软件 2.验证VM是否安装成功: (有些机器在安装vmware的时候会出现一个错误:virtual XT,这需要重启 ...
- --nodejs详细安装步骤
什么是nodejs? 脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入html的js语言,浏览器是它的解析器角色.而对于需要独立运行的JS,node ...
- Windows下Oracle安装图解----oracle-win-64-11g 详细安装步骤
一. Oracle 下载 官方下地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.htm ...
- MySql绿色版安装步骤和方法,以及配置文件修改,Mysql服务器启动
MySql绿色版Windows安装步骤和方法,以及配置文件修改,Mysql服务器启动 支持“标准”Markdown / CommonMark和Github风格的语法,也可变身为代码编辑器: 支持实时预 ...
- MySQL基础 — 详细安装
MySQL--安装 打开MySQL 5.5 安装文件开始: 点击Next 打上勾,再点击Next 点击Custom,说明如下: Typical(典型安装) Installs the mo ...
- Anaconda的详细安装步骤图文并茂
Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本.Anaconda包含了conda.Python在内的超过180个科学包及其依赖项. 事实上Anaco ...
- Oracle(11g)详细安装步骤
最详细的Oracle安装步骤就在这里,话不多说直接给大家上安装Oracle的详细教程 如果没有安装包,可以先点击下载下载地址:http://download.oracle.com/otn/nt/o ...
- 如何搭建SVN服务器,详细安装步骤。
SVN服务器端安装 下载: VisualSVN是一款图形化svn服务器.官网 http://www.visualsvn.com/server/ 下载地址: http://www.visualsvn.c ...
随机推荐
- Spring实战Day7面向切面编程术语介绍
#### 面向切面编程 为什么需要切面? 有些功能需要在应用中的多个地方使用到,但是我们又不想在着每个地方都调用他们 切面术语 通知(advice):切面需要完成的工作 通知的类型(什么时间完成工作) ...
- IoT设备程序开发及编译环境搭建初体验
引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...
- 【转】 nginx rewrite 伪静态配置参数详细说明
nginx rewrite 伪静态配置参数和使用例子 附正则使用说明 正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分 ...
- Java 实现 淘宝秒杀 聚划算 自己主动提醒 源代码
说明 本实例可以监控聚划算的抢购button,在聚划算整点聚的时间到达时自己主动弹开页面(URL自定义). 能够自己定义监控持续分钟数,同一时候还能够通过多线程加快刷新速度. 源代码 package ...
- python实现的一个简单的网页爬虫
学习了下python,看了一个简单的网页爬虫:http://www.cnblogs.com/fnng/p/3576154.html 自己实现了一个简单的网页爬虫,获取豆瓣的最新电影信息. 爬虫主要是获 ...
- 走入asp.net mvc不归路:[3]创建控制器
实际上,控制器就是一个类,一个继承自Controller的类.正常创建一个Controller即可,而问题在于asp.net mvc提供了一套便捷的方法,在创建一个Controller时,可以自动创建 ...
- 【转载】分布式RPC框架性能大比拼
dubbo.motan.rpcx.gRPC.thrift的性能比较 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 ...
- [转载]C函数的实现(strcpy,atoi,atof,itoa,reverse)
在笔试面试中经常会遇到让你实现C语言中的一些函数比如strcpy,atoi等 1. atoi 把字符串s转换成数字 int Atoi( char *s ) { , i = ; ; ; isspace( ...
- Jupyter notebook 使用Turorial
The cell magics in IPython http://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/note ...
- iOS APP第一次上架遇到的问题
现在苹果审核时越来越严了,我们有两个APP时同时上线的,代码用的也是一套的.但是有其中一个是第一次发布所以就拒了,信息就是下图.大概意思是用到支付了吗?用户是怎么来的.值需要把这些信息回复了.就OK ...