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端口 

[[email protected] ~]# vi /etc/sysconfig/iptables

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

[[email protected] ~]# /etc/init.d/iptables restart

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

2、关闭SELINUX

[[email protected] ~]# vi /etc/selinux/config

#SELINUX=enforcing  #注释掉

#SELINUXTYPE=targeted  #注释掉

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

:wq   #保存,关闭

[[email protected] ~]# shutdown -r now  #重启系统

3、安装编译工具 

[[email protected] ~]# 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上传

[[email protected] src]# yum install -y lrzsz

[[email protected] src]# rz

5、 安装cmake

[[email protected] src]# tar zxvf cmake-2.8.7.tar.gz

[[email protected] src]# cd cmake-2.8.7

[[email protected] cmake-2.8.7]# ./bootstrap

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

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

报错:缺少C的编译器

[[email protected] ~]# yum install gcc

继续cmake的安装

[[email protected] cmake-2.8.7]# ./bootstrap

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

[[email protected] ~]# yum install gcc-c++

重复上面的操作

[[email protected] cmake-2.8.7]# ./bootstrap

[[email protected] cmake-2.8.7]# make && make install  #编译并安装

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

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

6、安装mysql 

[[email protected] ~]# groupadd mysql#添加mysql组

[[email protected] ~]# useradd -g mysql mysql -s /bin/false

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

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

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

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

[[email protected] ~]# mkdir -p /usr/local/mysql#创建MySQL安装目录

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# tar zxvf mysql-5.5.22.tar.gz#解压MySQL

[[email protected] src]# cd mysql-5.5.22

[[email protected] mysql-5.5.22]# cmake .\

>-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

>-DMYSQL_DATADIR=/data/mysql \

>-DSYSCONFDIR=/etc \  #配置

报错:缺少ncurses-devel包

[[email protected] ~]#yum install ncurses-devel

删除CMakeCache.txt文件

[[email protected] ~]# find / -name CMakeCache.txt

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

重复上面的操作

[[email protected] mysql-5.5.22]# cmake .\

>-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

>-DMYSQL_DATADIR=/data/mysql \

>-DSYSCONFDIR=/etc \  #配置

[[email protected] mysql-5.5.22]# make && make install#编译并安装

[[email protected] ~]# cd /usr/local/mysql

[[email protected] mysql]# cp ./support-files/my-huge.cnf /etc/my.cnf

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

[[email protected] mysql]# vi /etc/my.cnf

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

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

[[email protected] mysql]# ./scripts/mysql_install_db --user=mysql

#生成mysql系统数据库

[[email protected] mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

#把Mysql加入系统启动

[[email protected] mysql]# chmod 755 /etc/init.d/mysqld  #增加执行权限

[[email protected] mysql]# chkconfig mysqld on  #加入开机启动

[[email protected] mysql]# vi /etc/rc.d/init.d/mysqld

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

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

[[email protected] mysql]# service mysqld start  #启动MySQL

[[email protected] 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

[[email protected] mysql]# reboot

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

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

[[email protected] ~]# mysql_secure_installation  # MySQL安全配置向导,设置MySQL密码

[[email protected] ~]# 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!

或者直接修改密码

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

[[email protected] ~]#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)

[[email protected] ~]# 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; #解除锁定

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

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

[[email protected] ~]# scp /home/yunweib.sql [email protected]:/home/

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

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

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

[[email protected] ~]# 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 [email protected] identified by ‘password‘;

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

GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY ‘password‘

说明:

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

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

(3)newuser 用户名

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

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

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

 

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

[[email protected] ~]# 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)

[ro[email protected] ~]# service mysqld restart#重启MySQL

[[email protected] ~]# mysql -u root –p#进入mysql控制台

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

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

 

 

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

[[email protected] ~]# 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)

[[email protected] ~]# service mysqld restart   #重启MySQL

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

[[email protected] ~]# 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主服务器

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

mysql> use yunweia#进入数据库

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

2、进入MySQL从服务器

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

mysql> use yunweia#进入数据库

mysql> show tables;

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

 

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

时间: 2024-12-17 03:15:02

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

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

LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等) linux详细版本为RHEL5.3 [[email protected] mail]# uname -a Linux localhost.localdomain 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686 i686 i386 GNU/Linux 1.上传apache源代码文件 httpd-2.2.13.tar.bz2

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

一. Oracle 下载 官方下地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html win 32位操作系统 下载地址: http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_database_1of2.zip http://download.oracle.com/otn/nt/oracle11g/11201

Rational Rose2007详细安装步骤

学习了UML,那么Rational rose画图软件当然就是必不可少的了.我的电脑是win7 64位的系统.下面的链接是安装软件以及破解方法.该软件是BIN格式的,也就是镜像文件,需要安装一个虚拟驱动对其进行安装. 安装软件:http://yunpan.cn/cgEFPECZjcK6H 提取码 af67 破解方法:http://yunpan.cn/cgEF6TBbBrLqg   提取码 c35b 下面说下详细地安装步骤. (1)      双击setup安装程序,进入安装向导界面,如图1. 图1

NGINX MySQL PHP的安装步骤

一.NGINX的安装步骤 1.在浏览器中找到下载地址进行下载: wget http://nginx.org/download/nginx-1.16.0.tar.gz 2.然后解压到指定目录中 : tar -zxvf nginx-1.16.0.tar.gz -C /usr/local/src/ 3.下载环境包 yum install openssl openssl-devel zlib zlib-devel pcre pcre-develyum install gcc gcc-c++ 4.探测目标

Oracle(11g)详细安装步骤

 最详细的Oracle安装步骤就在这里,话不多说直接给大家上安装Oracle的详细教程  如果没有安装包,可以先点击下载下载地址:http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_database_1of2.ziphttp://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_database_2of2.zip 一.首先大家要确定自己电脑上有没有安装过Orac

Linux下自动备份MySQL数据库详细操作步骤(转载)

环境说明操作系统:CentOSIP:192.168.150.214Oracle数据库版本:Oracle11gR2用户:root 密码:123456端口:3306数据库:ts_0.ts_1.ts_2.ts_3 详细的操作步骤如下1.root用户登录服务器 mkdir -p /backup/mysqldata  #新建Oracle数据库备份目录 2.新建Oracle数据库备份脚本vi /backup/mysqldata/dbbackup.sh #新建文件,输入以下代码 |#!/bin/bash|#D

Oracle9i的详细安装步骤(有图解)

Oracle9i的安装和卸载详解 本章将以Windows操作系统为例讲述Oracle9i数据库的安装 主要内容包括:安装前的准备  Oracle9i数据库的安装  验证安装成功 以及数据库的卸载 2.1  安装前的准备 2.1.1  安装需求 Oracle公司推荐在Windows NT和Windows 2000下安装Oracle数据库,并且磁盘的分区为NTFS格式.但是你也可以使用Windows 98或者Windows XP,磁盘分区也可以是FAT32. Oracle数据库大体上分为两个版本,一

mysql的详细安装及排错

#===================== 导入数据库: # tar -xvf employees_db-full-1.0.6.tar.bz2 # cd employees_db # msyql -h localhost -u root < employees.sql  ============================================= 注意事项: 1.[ ]# rpm -qa|grep mysql  如果同时存在mysql-libs 和mysql-server ,要把

(二)mysql主从同步搭建步骤

Master_Server:192.168.159.10 Slave_Server:192.168.159.11 1.测试远程账户登录 Master_Server: #给backup用户授权 mysql> grant replication slave on *.* to 'backup'@'192.168.159.11'  identified by '123'; #检查  authentication_string 相当于mysql5.5之前的password mysql> select