zoukankan      html  css  js  c++  java
  • 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.userG;   #查看所有用户权限

     

    添加用户

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

  • 相关阅读:
    docker 部署 nginx+php+mysql
    jquery-weui picker组件实现只选择年月
    ios端微信浏览器禁止上下滑动
    mysql 统计连续天数
    mysql 省市数据
    php 获取毫秒时间戳
    create-react-app 打包后文件路径问题
    php nginx 获取header信息
    ubuntu或者debian安装php-gd扩展错误
    php xml字符串转数组
  • 原文地址:https://www.cnblogs.com/liuyansheng/p/5913835.html
Copyright © 2011-2022 走看看