mysql主从安装_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

说明: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

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

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

e1974efe5007df403fce1bf122944abb.png

报错:缺少C的编译器

[root@localhost ~]# yum install gcc

继续cmake的安装

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

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

eb58ccb782a4398f5561027e40b92b7e.png

[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 \  #配置

ac52cd8cc29b6e5088fd6d374770b473.png

报错:缺少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

New password:

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

... 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

- 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;查看主服务器,出现以下类似信息

76e0adf394f9d2e1e306bf04f5e733c9.png

注意:这里记住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同步信息,出现以下内容

54ecabdfde8946692007a35ccfad5c36.png

注意查看:

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数据库配置主从服务器实现双机热备实例教程完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值