澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站CentOS系统MySQL双机热备配置,

2019-12-01 作者:数据库网络   |   浏览(196)

1  概述

在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux、Windows以及UNIX。其中Linux备受青睐的主要原因有两个:

首先,Linux作为自由软件有两个特点:一是它免费提供源码,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上。这就吸引了世界各地的操作系统高手为Linux编写各种各样的驱动程序和应用软件,使得Linux成为一种不仅只是一个内核,而且包括系统管理工具、完整的开发环境和开发工具、应用软件在内,用户很容易获得的操作系统。

其次,究其根本,Linux是一个UNIX系统变种,因此也就具有了UNIX系统的一系列优良特性,UNIX上的应用可以很方便地移植到Linux平台上,这使得UNIX用户很容易掌握Linux。

基于Linux的安全可靠、效率高、免费、良好的网络支持、与UNIX完全兼容等方面的考虑,Linux算是最常用的一种。这样,在项目中就会有在Linux下安装数据库的需求,例如Oracle、MySQL等。本文主要介绍在Linux环境下安装MySQL数据库的两种方式,以及MySQL数据库的相关配置步骤,其中常见的一些问题也会进行说明,最后会展示一种比较常见的MySQL数据库的备份方式——双机热备。

在CentOS上把MySQL从5.5升级到5.6,centos5.6

(五)Linux环境部署(Centos Nginx Tomcat Mysql)-Mysql安装

 

以下为本人本地测试实践中,完整的搭建一个基于Linux系统上Centos Nginx Tomcat Mysql的操作文档,梳理记录如下,希望对于那些想要系统地完整搭建Linux环境的程序员们一个系统性的参考。但因大部分都是边搭建边记录下的操作,有所疏漏在所难免,还望见谅;如有问题和意见请帮忙在后面的评论中指出,万分感谢!另整个搭建的过程中参考了网上许多优秀博主的优秀实践,在文中末尾或者其他适当的地方都有所标注,如有必要,你可以按参考的链接阅读参考的原文章。本文档一共分为6部分,6篇文章,分别是:

1、(一)Linux环境部署(Centos Nginx Tomcat Mysql) - FTP安装

2、(二)Linux环境部署(Centos Nginx Tomcat Mysql) - 防火墙配置

3、(三)Linux环境部署(Centos Nginx Tomcat Mysql) - Nginx环境搭建

4、(四)Linux环境部署(Centos Nginx Tomcat Mysql) - 安装Tomcat和JDK 以及 Nginx与Tomcat整合

5、(五)Linux环境部署(Centos Nginx Tomcat Mysql) - Mysql 安装

6、(六)Linux环境部署(Centos Nginx Tomcat Mysql) - 一些常用命令总结

2  预期读者

  • 数通畅联新员工

  • 广大技术爱好者

在CentOS上把MySQL从5.5升级到5.6

摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程。

(五) Mysql安装

 

1、安装查看有没有安装过:

yumlist installed mysql*

rpm -qa | grep mysql*

查看有没有安装包:

yum list mysql*

安装mysql客户端:

yum install mysql

安装mysql服务器端:

yum install mysql-server yum

install mysql-devel

2、启动&&停止数据库字符集设置

mysql配置文件/etc/my.cnf中加入default-character-set=utf8

启动mysql服务: servicemysqld start或者/etc/init.d/mysqld start

开机启动:

添加开机启动:chkconfig--add mysqld;

开机启动:chkconfig mysqld on;

查看开机启动设置是否成功chkconfig--list | grep mysql* mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭停止:

service mysqld stop

3、登录 创建root管理员:

mysqladmin-u root password 123456

登录: mysql -u root-p输入密码即可。忘记密码: service mysqld stop mysqld_safe--user=root --skip-grant-tables mysql -u root use mysql update user setpassword=password("new_pass") where user="root"; flushprivileges;

4、远程访问 开放防火墙的端口号mysql

增加权限:mysql库中的user表新增一条记录host为“%”,user为“root”。

5、Linux MySQL的几个重要目录

数据库目录/var/lib/mysql/

配置文件 /usr/share /mysql(mysql.server命令及配置文件)

相关命令 /usr/bin(mysqladminmysqldump等命令)

启动脚本 /etc/rc.d/init.d/(启动脚本文件mysql的目录)

 

6、删除 mysql数据库

如果使用的是 yum安装的 mysql,需要删除的话,就使用如下命令:

yum -y remove mysql*

然后将 /var/lib/mysql文件夹下的所有文件都删除干净

最后再重新执行上面的安装步骤。

 

7.授权用户从远程登录

1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql"数据库里的 "user"表里的"host"项,从"localhost"改称"%"

mysql -u root -pvmwaremysql>usemysql;mysql>update user set host = '%' where user = 'root';mysql>selecthost, user from user;

2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

 

 

修改Mysql默认数据库数据默认存放位置

参考:

 

由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,没有办法,只能想办法转移数据的目录。 我这里在/data, 把外部数据盘挂载在/data下。

下面我整理一下把MySQL从/var/lib/mysql目录下面转移到/data/mysql目录的具体操作:

 

在数据库里看一下数据库里当前数据文件的存放路径:

mysql> show variables like '%dir%';

1、首先我们需要关闭MySQL,命令如下
service mysqld stop
2、然后是转移数据,为了安全期间,我们采用复制命令cp,先找到mysql的原目录
cd /var/lib
ls
运行这个命令之后就会看到mysql的目录了,然后执行cp命令
cp -a mysql /data/ #这样就把数据库复制到/dat下面去了

注意:(-a这个参数一定要带着,否则复制过去的权限就不对了。)

如果数据库比较大的话,时间会比较长,可能会超时,具体怎么设置ssh不超时的办法,请大家自己找相关资料。
3、然后我们修改配置文件,一共有三个,下面我一一说明
修改第一个文件:修改之前先备份cp /etc/my.cnf /etc/my.cnfbak
vi /etc/my.cnf
打开之后修改datadir的目录为/data/mysql
把socket改成/data/mysql/mysql.sock #为了安全起见,你可以把原来的注释掉,然后重新加入一行,改成现在的目录。
修改第二个文件:修改之前先备份 cp /etc/init.d/mysqld /etc/init.d/mysqldbak
vi /etc/init.d/mysqld
注意:准确的位置是/etc/rc.d/init.d/mysqld,由于这里这里有一个/etc/init.d到/etc/rc.d/init.d的映射,
所以用上面的命令即可,也简单。
把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:/data/mysql
修改第三个文件:修改之前先备份 cp /usr/bin/mysqld_safe/usr/bin/mysqld_safebak
vi /usr/bin/mysqld_safe
这里也是修改datadir的目录为/data/mysql
4、下面需要建立一个mysql.sock的链接
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock

至此所有的修改都完成了,下面启动mysql
service mysqld start
或者重启linux
reboot
如果能正常启动,说明修改成功。

 

以下为本人本地测试实践中,完整的搭建一个基于Linux系统上Centos Nginx Tomcat Mysql的操作文...

3  环境信息

操作系统:CentOS 6.4

MySQL:版本为MySQL5.6

1. 概述

在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括Git、Nginx、MySQL和PHP。这篇文章讲的是升级MySQL的过程,其他软件的升级,可见下面列出的文章。

  • 在CentOS上把git从1.7.1升级到1.7.12.4
  • 在CentOS上把Nginx从1.2.4升级到1.6.0
  • 在CentOS上把MySQL从5.5升级到5.6 (本文)
  • 在CentOS上把PHP从5.4升级到5.5

在我加入这个项目之前,服务器上的MySQL已经安装设置好了,我只是正常使用而已。现在过去1年了,应该适当升级服务器上的软件了。升级这种事情是应当经常做的,倒不是为了追最新版本,而是当正式版本发放出来的时候,应该及时更新, 以便获得最新的更正、补丁,避免服务器上的漏洞,减少安全隐患。

升级是在今年6月11-12日进行的,到今天才有空做个记录,便于日后参考。

动手之前,查找了很多资料,因为MySQL要比之前升级的Git和Nginx要复杂多了。我在参考资料中列出了我所能找到作为依据的文档,可供参考。

4  名词解释

Linux:Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

CentOS:(CommunityEnterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。

MySQL:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MYISAM:MySQL两种常见的存储引擎之一,特点是表数据文件和表索引文件都是独立存放,适合记录少于2000万以下、并发量不是很高的环境,适合简单的查询,不支持事务,容易出现数据丢失,表损坏,经常需要修复,修复往往也导致数据丢失,适合读多写少的环境

INNODB:MySQL两种常见的存储引擎之一,特点是表数据文件和表索引文件是共同一个文件,适合大规模数据,小规模的数据反而效率不高,适合并发量高的环境、复杂的查询,支持事务,支持数据自动修复,保证了数据丢失最少

2. 计划

我们使用的服务器是阿里云的,服务器的操作系统是CentOS 6.3。登录管理界面,发现共有两块物理硬盘,一块系统盘,一块数据盘,而我们只使用了系统盘,数据盘一直空着没用。所以,计划就变成:

5  操作步骤

3. 加载数据硬盘

下面的操作需要以超级管理员root的身份登录服务器进行操作。

5.1  安装方式

在CentOS上安装MySQL的方式大致可以分为两类,一种是网络环境通畅的情况下,可以通过YUM库联网安装,另一种是通过本地上传MySQL介质进行安装。

3.1 查看硬盘

首先,查看硬盘使用情况:

# fdisk -l

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1        2550    20480000   83  Linux
/dev/xvda2            2550        2611      490496   82  Linux swap / Solaris

Disk /dev/xvdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1             20G  9.4G   11G  48% /
tmpfs                 498M     0  498M   0% /dev/shm

可以看到,逻辑盘/dev/xvda1是位于根目录(/),/dev/xvda2是系统缓存(swap)。第二块物理硬盘/dev/xvdb的大小是21.5 GB,没有加载和使用,我们可以把它加载,并把MySQL的数据迁移到第二块物理硬盘上,把对系统盘和数据库的硬盘访问分流,希望这样一定程度上可以提高访问MySQL数据库的性能。

5.1.1   yum远程安装

  • 查看CentOS自带MySQL是否已安装

指令:yum list installed | grep mysql

  • 首先需要卸载依赖文件

指令:例如yum -y remove mysql-libs.x86_64

若有多个依赖文件则依次卸载,当结果显示为Complete!即卸载完毕

  • 查看yum库上的MySQL版本信息

指令:yum list | grep mysqlyum -y list mysql*

CentOS系统需要正常连接网络

  • 通过yum安装MySQL

指令:yum -y install mysql-server mysql mysql-devel

  • 安装时会显示有冲突文件,移除冲突的文件

指令:例如yum -y remove MySQL-client-advanced-5.6.22*

  • 查询是否已安装MySQL

rpm -qa|grep -imysql

-i忽略大小写

  • 成功安装后,启动MySQL失败,需要查看一下MySQL的日志信息来定位错误原因

less/var/log/mysqld.log

  • 启动MySQL服务,更改数据库密码

mysql>update user set  password=password('YouPassword') where user='root';

mysql>FLUSH PRIVILEGES;

远程连接时,防火墙启用端口号

指令:iptables -I INPUT -p tcp--dport 3306 -j ACCEPT

3.2 格式化数据硬盘

格式化第二块物理硬盘:

# mke2fs -j /dev/xvdb
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

格式化顺利完成。

5.1.2   本地介质安装

  • 首先下载MySQL安装包

mysql-advanced-5.6.23-linux-glibc2.5-x86_64.tar.gz

  • 解压并放到安装文件夹下,其中需要使用的是

MySQL数据库:MySQL-server-5.6.22-1.linux_glibc2.5.x86_64.rpm

MySQL客户端:MySQL-client-5.6.22-1.linux_glibc2.5.x86_64.rpm

  • 安装前先检查是否已安装MySQL

指令:rpm -qa | grep mysql

  • 如果之前有安装过MySQL,需要删除已安装的MySQL

指令:例如rpm -e --nodeps mysql-libs-5.1.47-4.el6.i686 

再次检查是否已安装MySQL

  • 安装MySQL服务端

指令:rpm -ivh MySQL-server-5.6.22-1.linux_glibc2.5.x86_64.rpm

Preparing...  ########################################### [100%]

1:MySQL-server  ########################################### [100%]

A RANDOM PASSWORD HAS BEEN SET FOR THE  MySQL root USER !

You will find that password in  '/root/.mysql_secret'.

You must change that password on your  first connect,

no other statement but 'SET PASSWORD'  will be accepted.

See the manual for the semantics of the  'password expired' flag.

Also, the account for the anonymous user  has been removed.

In addition, you can run:

/usr/bin/mysql_secure_installation

which will also give you the option of  removing the test database.

This is strongly recommended for  production servers.

See the manual for more instructions.

Please report any problems at  http://bugs.mysql.com/

The latest information about MySQL is  available on the web at

http://www.mysql.com

Support MySQL by buying support/licenses  at http://shop.mysql.com

New default config file was created as  /usr/my.cnf and

will be used by default by the server  when you start it.

You may edit this file to change server  settings

  • 检查MySQL 3306端口是否打开了

指令:netstat –nat

发现还没有3306的端口,说明MySQL服务还没有启动

启动MySQL服务

指令:service mysql start

Starting MySQL.......... SUCCESS!

启动成功后,再次检查3306端口号

  • 安装客户端

指令:rpm -ivh MySQL-client-5.6.22-1.linux_glibc2.5.x86_64.rpm

Preparing...  ########################################### [100%]

1:MySQL-client  ^C########################################### [100%]

3.3 加载数据硬盘

下面,加载第二块物理硬盘为/data目录:

# mount /dev/xvdb /data

这个命令没有反馈,当时我有点儿吃惊和失落。因为这许多命令我也都是第一次从网上查到,第一次使用,对于它们的输出和结果,都有一种第一次坐过山车般的期待、兴奋、好奇和不确定,每一次的输出对于我都是新的,你不知道翻过面前这个坡之后会出现什么!

再用下面的命令查看新的逻辑盘:

# df -kh
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1             20G  9.3G   11G  48% /
tmpfs                 498M     0  498M   0% /dev/shm
/dev/xvdb              20G  173M   19G   1% /data

澳门新萄京官方网站,可以看到/dev/xvdb是第二块物理硬盘!激动,成功了!

用下面的命令查看加载(mount)的类型:

# mount
/dev/xvda1 on / type xfs (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/xvdb on /data type ext3 (rw)

到这里,第二块物理硬盘加载成功,下面该yum出场了。

5.2   配置过程

4. 升级MySQL的计划

不好意思,yum同学,编剧说你还要等下一幕。

升级MySQL时,又做了两个计划:

  • 当然,首先要备份所有的数据库数据
  • 计划A: 使用参考资料[6]的方法,添加安装库,用yum update升级
  • 计划B: 用yum卸载MySQL 5.5,再安装MySQL 5.6

5.2.1   备份方式

MySQL的常用备份方式可分为三种:

  •  逻辑备份

优点:最大好处是能够与正在运行的MySQL自动协同工作,在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问),可能会阻止修改操作,SQL文件通用方便移植。

缺点:备份的速度比较慢,如果是数据量很多的时候,就很耗时间。如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据),那么服务就会影响的。

  • 物理备份

直接拷贝只适用于MYISAM类型的表。这种类型的表是与机器独立的。但实际情况是,设计数据库的时候不可能全部使用MYISAM类型表。也不可能:因为MYISAM类型表与机器独立,方便移植,于是就选择这种表,这并不是选择它的理由。

缺点:不能去操作正在运行的MySQL服务器(在拷贝的过程中有用户通过应用程序访问更新数据,这样就无法备份当时的数据)可能无法移植到其他机器上去。

更多的情况是,会根据业务特点(比如需要支持事务机制就必须使用INNODB),查询速度和服务性能来选择表类型的。

  • 双机热备份

MySQL数据库没有增量备份的机制。当数据量太大的时候备份是一个很大的问题。还好MySQL数据库提供了一种主从备份的机制(也就是双机热备)

优点:适合数据量大的时候。大的互联网公司对于MySQL数据备份,都是采用热机备份。搭建多台数据库服务器,进行主从复制。

实现机制:对于一个MySQL服务器,一般有两个线程来负责复制和被复制。当开启复制之后:

  • 作为主服务器Master,会把自己的每一次改动都记录到二进制日志 binlog 中。(从服务器会负责来读取这个log,然后在自己那里再执行一遍。)

  • 作为从服务器Slave,会用master上的账号登陆到master上,读取master的binlog,写入到自己的中继日志 Relaylog,然后自己的SQL线程会负责读取这个中继日志,并执行一遍。 

在考虑双机热备时,需要注意,一般意义上的双机热备都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的,但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。而如果没有双机热备,则一旦出现服务器故障,可能会出现几个小时的服务中断,对业务的影响就可能会造成很严重的损失。

5. 计划A: yum update

下面大部分命令都需要在超级管理员root的权限下运行。

5.2.2   配置步骤

环境要求:

  1. 主数据库(Master)IP:10.254.1.248

  2. 备份数据库(Slave)IP:10.254.1.249

  3. 备份前保证两个数据库的数据一致

Master端

  • 进入MySQL命令行, 给备份主机赋予复制权限,即备份主机使用用户名backup,密码123456就可以连接到主服务器,backup就是同步账号

grant file,select,replication slave on  *.* to backup@10.254.1.249 identified by '123456';

  • 修改配置文件my.cnf[mysqld]:

sevice-id=1

log-bin=mysql-bin --------------打开日志开关,二进制日志文件

max_binlog_size=104857600

binlog_format=mixed--------日志模式row level和statement level的结合

binlog-do-db= aeaiesb -------------在aeaiesb库进行的操作记录二进制日志文件,而不是对aeaiesb库的操作

binlog-ignore-db=mysql  --------------------忽略对mysql库的操作,即不记录到日志中

  • 查看master状态

在MySQL命令行:

show master status

mysql> show master status;

---------------------- ----------- ------------------ ------------------

| File         | Position | Binlog_Do_DB |  Binlog_Ignore_DB |

---------------------- ----------- ------------------- ------------------

| mysql-bin.000013 |     1150 | aeaiesb | mysql    |

----------------------- ---------- ------------------ ------------------

1 row in set (0.00 sec)

结果表示现在写日志的文件是mysql-bin.000013,位置是1105,slave端要从这个点开始同步备份aeaiesb

slave端

  • 停掉数据库

service mysql stop

  • 修改配置文件my.cnf,添加如下配置

server-id=2

replicate-same-server-id

master-host=10.254.1.248

master-user=backup

master-password=123456

master-port=3306

master-connect-retry=60 ----重复连接时间间隔

replicate-do-db=aeaiesb---同步master的aeaiesb库

relay-log=miniweb2-relay-bin----设置I/O线程读master的binlog并写入本地的文件名,即为relay-log

  • 重启数据库

service mysql start

  • 在MySQL命令行, 查看slave状态

mysql> show slave status/G;

***************************  1. row ***************************

Slave_IO_State:

Master_Host: 10.254.1.248

Master_User: backup

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql_bin.000013

Read_Master_Log_Pos: 1105

Relay_Log_File:  localhost-relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File: mysql_bin.000013

Slave_IO_Running: No

Slave_SQL_Running: Yes

Replicate_Do_DB: aeaiesb

  • 这时 Slave_IO_Running的值是No,I/O线程没有启动,是无法进行同步的处理步骤:

1) 在命令行下:

(1)slave stop;

(2)change master to  master_host='10.254.1.248',master_user='backup',master_password='123456',master_log_file='mysql-bin.000014',master_log_pos=1150  ;(前面查看的master状态)

(3)slave start;

(4)show slave status;

mysql>  show slave status/G;                                                                                                          *************************** 1. row ***************************

Slave_IO_State: Waiting for master to  send event

Master_Host: 10.254.1.248

Master_User: backup

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000013

Read_Master_Log_Pos: 1105

Relay_Log_File:  localhost-relay-bin.000002

Relay_Log_Pos: 251

Relay_Master_Log_File: mysql-bin.000013

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: aeaiesb

这样就可以进行同步了,在master的aeaiesb库中创建表,并插入数据会实时在slave端显示。

5.1 备份所有的数据库

用mysqldump来备份所有的数据库数据:

# mysqldump -u <db管理员用户名> -p --all-databases > 2014-06-12_all-db.sql

会提示输入密码,然后2014-06-11_all-db.sql就是备份数据,如果不想放在当前目录下,可以在上面的命令行上指定路径。

当然,也建议你单独备份每个用户数据库:

# mysqldump -u <db管理员用户名> -p mydb > 2014-06-12_mydb.sql

妥善保存这些非常重要的数据库备份文件。

5.3   常见问题

5.2 查看MySQL的版本

用下面的命令查看MySQL的版本:

# mysql --version
mysql  Version 14.14 Distrib 5.5.28, for Linux (x86_64) using reeadline 5.1

可见,当前的MySQL的版本是5.5.28。

5.3.1   更改MySQL数据存储位置

首先,MySQL安装完成后不像 SQLServer 默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。

a、数据库目录     /var/lib/mysql/

b、配置文件         /usr/share/mysql(mysql.server命令及配置文件)

c、相关命令         /usr/bin(mysqladmin mysqldump等命令)

      d、启动脚本          /etc/rc.d/init.d/(启动脚本文件mysql的目录)

其次,由于MySQL数据库目录占用磁盘比较大,而MySQL默认的数据文件存储目录为 /"var/lib/mysql",也可以把要把数据目录移到"/" 根目录下的 "mysqldata" 目录中

  • 首先停止MySQL服务

终端执行命令

/etc/init.d/mysql  stop

  • 在终端将原来mysql数据库目录文件全部都复制到新的数据库目录下

cp -r /var/lib/mysql  /disk1/mysqldata

  • 修改my.cnf配置文件

先备份,再修改

cp /etc/my.cnf  /etc/my.cnfbak

vi /etc/my.cnf

在打开的文件中找到datadir这行代码,查看后面的路径,做备份(在这行代码前加#)

原路径:/var/lib/mysql

新路径:/disk1/mysqldata

  • 修改mysqld

先备份,再修改

 cp /etc/init.d/mysqld /etc/init.d/mysqldbak

vi  /etc/init.d/mysqld

datadir原路径:/var/lib/mysql

datadir新路径:/disk1/mysqldata

  • 修改mysqld_safe文件

cp /usr/bin/mysqld_safe  /usr/bin/mysqld_safebak

vi  /usr/bin/mysqld_safe 

datadir原路径:/var/lib/mysql

datadir新路径:/disk1/mysqldata

  • 建立一个mysql.sock的链接

ln -s /disk1/mysqldata  /mysql.sock /var/lib/mysql/mysql.sock 

  • 重启服务

service mysqld  start 

  • 进入MySQL命令行查询数据文件目录地址

mysql> show variables like '%dir%';

5.3 添加MySQL的yum安装库

这是参照参考资料[7]来做的,后来发现[6]的方法更好:

# wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# rpm -ivh mysql-community-release-el6-5.noarch.rpm
# yum list | grep mysql

这样很多更新的MySQL安装包就都有了。

如有必要,运行下面的命令确保yum安装库是最新的:

# yum update mysql-community-release

5.3.2   启动失败可能的错误原因

通过查看MySQL日志时发现Table ‘mysql.plugin’ doesn’t exist这样的问题,这是因为新安装的MySQL需要初始化数据库

解决步骤:

1) 进入./mysql/bin目录下,执行脚本./mysql_install_db;

2) 执行完(1)后,此时会在./mysql/var目录下创建两个目录文件mysql、test;

3) 修改mysql、test两个目录及目录下所有文件的权限:

指令:chown mysql:mysql -R mysql test

  • 日志报错

mysqld_safe Starting mysqld daemon with  databases from /var/lib/mysql

 [Warning] Can't create test file  /var/lib/mysql/localhost.lower-test

[Warning] Can't create test file  /var/lib/mysql/localhost.lower-test

/usr/sbin/mysqld: Can't change dir to  '/var/lib/mysql/' (Errcode: 13)

 [ERROR] Aborting

 [Note] /usr/sbin/mysqld: Shutdown complete

首先关闭selinux服务

cd /etc/selinux

vi config

修改selinux为disabled,重启机器

  • 启动失败时

Fatal error: Can't open and lock  privilege tables: Table 'mysql.host' doesn't exist

使用命令

mysql_install_db --user=mysql 

初始化命令

  • 启动MySQL成功后,登录时

ERROR 1045 (28000): Access denied for  user 'root'@'localhost' (using password: YES)   

需要重置密码

1) 首先停止MySQL服务

service mysql stop  

2) 用mysqld_safe重启服务

/usr/bin/mysqld_safe --skip-grant-tables

3) 无密码登录

mysql –u root

4) 授权

grant all privileges on *.* to  'root'@'localhost' identified by '密码' with grant  option;

  • 授权新的数据库文件存放地址

chown -R mysql:mysql /disk1/mysqldata

5.4 用yum查看MySQL安装相关信息

用下面的命令查看安装了什么:

# yum list installed | grep ^mysql
mysql-community-release.noarch

其中,^mysql是指以mysql开头的安装包。

用下面的命令查看安装了的和可用的安装包:

# yum info mysql-server
Installed Packages
Name        : MySQL-Server
Arch        : x86_64
Version     : 5.5.28
Release     : 1.linux2.6
Repo        : installed
Available Packages
Name        : mysql-server
Arch        : x86_64
Version     : 5.1.73
Release     : 3.el6_5
Repo        : updates

这里不知道为啥可用的安装包没有显示MySQL 5.6的。

检查可用的安装包:

# yum check-update mysql-server
Obsoleting Packages
mysql-community-client.x86_64      5.6.19-2.el6           mysql56-community
    MySQL-client.x86_64            5.5.28-1.linux2.6      installed
mysql-community-devel.x86_64       5.6.19-2.el6           mysql56-community
    MySQL-devel.x86_64             5.5.28-1.linux2.6      installed
mysql-community-server.x86_64      5.6.19-2.el6           mysql56-community
    MySQL-server.x86_64            5.5.28-1.linux2.6      installed

可见,MySQL 5.6的安装包都算community版本了。

6  相关链接

CentOS镜像下载:

5.5 升级MySQL及其组件

运行下面的命令:

# yum update mysql-server
Dependencies Resolved

================================================================================
 Package                   Arch      Version         Repository            Size
================================================================================
Installing:
 mysql-community-client    x86_64    5.6.19-2.el6    mysql56-community     18 M
     replacing  MySQL-client.x86_64 5.5.28-1.linux2.6
 mysql-community-server    x86_64    5.6.19-2.el6    mysql56-community     52 M
     replacing  MySQL-server.x86_64 5.5.28-1.linux2.6
Installing for dependencies:
 mysql-community-common    x86_64    5.6.19-2.el6    mysql56-community    298 k
 mysql-community-libs      x86_64    5.6.19-2.el6    mysql56-community    1.9 M

Transaction Summary
================================================================================
Install       4 Package(s)

后面的输出省略了。可见有4个安装包(共70多MB)要下载、安装。结果,下载用了80分钟。

但安装遇到问题了:

Running rpm_check_debug
Running Transaction Test


Transaction Check Error:
  file /usr/bin/mysql_config from install of mysql-community-client-5.6.19-2.el6
.x86_64 conflicts with file from package MySQL-devel-5.5.28-1.linux2.6.x86)64

Error Summary
-------------

可以看到出错了,搜索了一阵儿,也没搞明白。随即停止A计划(和成龙的电影没关系),改用B计划。

6. 计划B: 用yum卸载再安装

可以预料,这个计划要多折腾一些。仍然需要在超级管理员root的权限下运行下面的命令。

6.1 停止web服务器

这时为了避免用户访问网站时,看到数据库连接失败这样的错误信息。到这时我才想起这一点来,还是对用户关怀不够,应该在有可能宕掉网站的操作之前就做的。

因为使用的是Nginx,所以运行下面的命令:

# service nginx stop
Stopping nginx:                                            [  OK  ]

6.2 卸载MySQL 5.5.28

一共有3个包要卸载。

先卸载mysql-server包:

# yum remove mysql mysql-server
Dependencies Resolved

================================================================================
 Package            Arch         Version                  Repository       Size
================================================================================
Removing:
 MySQL-server       x86_64       5.5.28-1.linux2.6        installed       153 M

Transaction Summary
================================================================================
Remove        1 Package(s)

Installed size: 153 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Erasing    : MySQL-server-5.5.28-1.linux2.6.x86_64                        1/1
  Verifying  : MySQL-server-5.5.28-1.linux2.6.x86_64                        1/1

Removed:
  MySQL-server.x86_64 0:5.5.28-1.linux2.6

Complete!

再卸载mysql-client:

澳门新萄京官方网站 1# yum

remove mysql-client Dependencies Resolved

Package Arch Version Repository Size

Removing: MySQL-client x86_64 5.5.28-1.linux2.6 installed 57 M

Transaction Summary

Remove 1 Package(s) Installed size: 57 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Erasing : MySQL-client-5.5.28-1.linux2.6.x86_64 1/1 Verifying : MySQL-client-5.5.28-1.linux2.6.x86_64 1/1 Removed: MySQL-client.x86_64 0:5.5.28-1.linux2.6 Complete! View Code

最后卸载mysql-devel:

澳门新萄京官方网站 2# yum

remove mysql-devel Dependencies Resolved

Package Arch Version Repository Size

Removing: MySQL-devel x86_64 5.5.28-1.linux2.6 installed 20 M

Transaction Summary

Remove 1 Package(s) Installed size: 20 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Erasing : MySQL-devel-5.5.28-1.linux2.6.x86_64 1/1 Verifying : MySQL-devel-5.5.28-1.linux2.6.x86_64 1/1 Removed: MySQL-devel.x86_64 0:5.5.28-1.linux2.6 Complete! View Code

澳门新萄京官方网站CentOS系统MySQL双机热备配置,Linux环境部署。3个包的卸载都顺利完成。

6.3 安装MySQL 5.6.19

安装比卸载更简单,因为yum会自动检查依赖安装包:

# yum install mysql-server
Dependencies Resolved

================================================================================
 Package                   Arch      Version         Repository            Size
================================================================================
Installing:
 mysql-community-server    x86_64    5.6.19-2.el6    mysql56-community     52 M
Installing for dependencies:
 mysql-community-client    x86_64    5.6.19-2.el6    mysql56-community     18 M
 mysql-community-common    x86_64    5.6.19-2.el6    mysql56-community    298 k
 mysql-community-libs      x86_64    5.6.19-2.el6    mysql56-community    1.9 M

Transaction Summary
================================================================================
Install       4 Package(s)

Total size: 72 M
Installed size: 323 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : mysql-community-common-5.6.19-2.el6.x86_64                   1/4
  Installing : mysql-community-libs-5.6.19-2.el6.x86_64                     2/4
  Installing : mysql-community-client-5.6.19-2.el6.x86_64                   3/4
  Installing : mysql-community-server-5.6.19-2.el6.x86_64                   4/4
warning: /etc/my.cnf created as /etc/my.cnf.rpmnew
/bin/chmod: cannot access `': No such file or directory
  Verifying  : mysql-community-common-5.6.19-2.el6.x86_64                   1/4
  Verifying  : mysql-community-libs-5.6.19-2.el6.x86_64                     2/4
  Verifying  : mysql-community-client-5.6.19-2.el6.x86_64                   3/4
  Verifying  : mysql-community-server-5.6.19-2.el6.x86_64                   4/4

Installed:
  mysql-community-server.x86_64 0:5.6.19-2.el6

Dependency Installed:
  mysql-community-client.x86_64 0:5.6.19-2.el6
  mysql-community-common.x86_64 0:5.6.19-2.el6
  mysql-community-libs.x86_64 0:5.6.19-2.el6

Complete!

由于篇幅关系,输出有所缩略。一切顺利,继续!

预告:繁琐的事情这才开始。

6.4 更改MySQL配置,来使用数据硬盘

更改etcmy.cnf,下面只列出更改的相关设置:

[mysqld]
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql
# data path changed to 2nd physical hard disk /dev/xvdb after upgrading from MySQL 5.5 to MySQL 5.6
innodb_data_home_dir = /data/mysql
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql
datadir = /data/mysql

如果你也更改了数据目录,最后一行的 datadir = /data/mysql 切不可遗漏,我就是因为这一行实际上没有及时改,还是指向旧的数据目录,导致数据升级失败,直到升级数据之后才发现,在下文中有详细论述。

6.5 启动MySQL服务

启动服务:

# service mysql start
mysql: unrecognized service

居然出错了!只好直接运行MySQL的daemon:

# /etc/init.d/mysqld start
Starting mysqld:                                           [  OK  ]

后来才知道,mysql是MySQL 5.5的服务名称,到了MySQL 5.6服务就改名为mysqld了。所以,其实这里可以运行service mysqld start的。

6.6 升级MySQL数据库及表

按照参考资料[6],到这时,MySQL的程序已经升级完毕,要升级数据了。

先把旧数据目录下的所有文件都拷贝到新的数据目录下。可惜,这里的命令在我的工作日志中没有记录,日后找到再不上。不过这是基本的Linux命令,就算你不知道,也一定能在网上找到。

然后运行下面的命令:

# mysql_upgrade -uroot -p
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=<为安全故略去>' '--socket=/var/lib/mysql/mysql.sock'
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--port=<为安全故略去>' '--socket=/var/lib/mysql/mysql.sock'
Warning: Using a password on the command line interface can be insecure.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
# ... ... 为省略篇幅故略去 ... ...
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Running 'mysql_fix_privilege_tables'...
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--port=<为安全故略去>' '--socket=/var/lib/mysql/mysql.sock'
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck' with connection arguments: '--port=<为安全故略去>' '--socket=/var/lib/mysql/mysql.sock'
Warning: Using a password on the command line interface can be insecure.
mydb.table1                                         OK
mydb.table2                                         OK
# ... ... 为省略篇幅故略去 ... ...
mydb.table793                                       OK
mydb.table794                                       OK
OK

到这里发现,数据库有问题,数据升级并未成功。原因就是之前提及的,升级数据时etcmy.cnf中的数据目录(即datadir = 这一行)还是指向旧的数据目录,我猜想这导致一些操作发生了混乱。

这时我感觉到难免的慌张和混乱,之后我做了一些尝试:

  • 重复升级数据的过程,结果依旧
  • 尝试修复缺失或者损毁的系统数据库中的5个数据表,结果发现文档犹如进入了一个迷宫,不得要领。

不得不就此作罢。

6.7 重新创建数据目录

看起来由于我之前的疏忽,数据库已经在上一步升级数据中被损毁了!

这时候,你能做什么!谷歌(或者百度)就是你当前最好的朋友!

在冒汗和揪头发的折磨中,总算找到了根救命稻草mysql_install_db,详见参考资料[9],这个命令可以重新创建数据目录,这就意味着重新创建系统数据库mysql,也意味着现有的用户数据库都将被清除。这时,你会感谢上帝、佛祖、圣母和玉皇大帝,如果你在最开始对所有的数据库做了备份的话。回头看一下我们在5.1 备份所有的数据库做的事情,就知道这是多么重要了!有了备份,我们就可以恢复所有的数据库了!

先要做的,是在MySQL的配置文件中设置正确的数据目录。再次更改etcmy.cnf,下面只列出更改的相关设置:

[mysqld]
datadir = /data/mysql

然后,祭出我们的救命稻草mysql_install_db来重新创建数据目录(如果你想知道该命令的详细参数,可见参考资料[9]):

# /usr/bin/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MySQL system tables...2014-06-13 00:35:17 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2014-06-13 00:35:17 11574 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-06-13 00:35:17 11574 [Note] InnoDB: The InnoDB memory heap is disabled
2014-06-13 00:35:17 11574 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-06-13 00:35:17 11574 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-06-13 00:35:17 11574 [Note] InnoDB: Using Linux native AIO
2014-06-13 00:35:17 11574 [Note] InnoDB: Using CPU crc32 instructions
2014-06-13 00:35:17 11574 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-06-13 00:35:17 11574 [Note] InnoDB: Completed initialization of buffer pool
2014-06-13 00:35:17 11574 [Note] InnoDB: Highest supported file format is Barracuda.
2014-06-13 00:35:17 11574 [Note] InnoDB: 128 rollback segment(s) are active.
2014-06-13 00:35:17 11574 [Note] InnoDB: Waiting for purge to start
2014-06-13 00:35:17 11574 [Note] InnoDB: 5.6.19 started; log sequence number 44199093
2014-06-13 00:35:17 11574 [Warning] InnoDB: Cannot open table mysql/innodb_table_stats from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
ERROR: 1146  Table 'mysql.innodb_table_stats' doesn't exist
2014-06-13 00:35:17 11574 [ERROR] Aborting

2014-06-13 00:35:17 11574 [Note] Binlog end
2014-06-13 00:35:18 11574 [Note] InnoDB: FTS optimize thread exiting.
2014-06-13 00:35:18 11574 [Note] InnoDB: Starting shutdown...
2014-06-13 00:35:19 11574 [Note] InnoDB: Shutdown completed; log sequence number 44199103
2014-06-13 00:35:19 11574 [Note] /usr/sbin/mysqld: Shutdown complete

又出错了!别慌,这是因为数据目录并未清空,其中还有之前损毁的数据库文件。

删除当前的数据目录。我实际做的是把 /data/mysql 改名为 /data/mysql.bak2,效果一样,/data/mysql 目录不存在了,只是我做了个物理文件备份。

再次重建数据目录:

# /usr/bin/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MySQL system tables...2014-06-13 00:46:06 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2014-06-13 00:46:06 11654 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-06-13 00:46:06 11654 [Note] InnoDB: The InnoDB memory heap is disabled
2014-06-13 00:46:06 11654 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-06-13 00:46:06 11654 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-06-13 00:46:06 11654 [Note] InnoDB: Using Linux native AIO
2014-06-13 00:46:06 11654 [Note] InnoDB: Using CPU crc32 instructions
2014-06-13 00:46:06 11654 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-06-13 00:46:06 11654 [Note] InnoDB: Completed initialization of buffer pool
2014-06-13 00:46:06 11654 [Note] InnoDB: The first specified data file /data/mysql/ibdata1 did not exist: a new database to be created!
2014-06-13 00:46:06 11654 [Note] InnoDB: Setting file /data/mysql/ibdata1 size to 12 MB
2014-06-13 00:46:06 11654 [Note] InnoDB: Database physically writes the file full: wait...
2014-06-13 00:46:06 11654 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2014-06-13 00:46:07 11654 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2014-06-13 00:46:09 11654 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2014-06-13 00:46:09 11654 [Warning] InnoDB: New log files created, LSN=45781
2014-06-13 00:46:09 11654 [Note] InnoDB: Doublewrite buffer not found: creating new
2014-06-13 00:46:09 11654 [Note] InnoDB: Doublewrite buffer created
2014-06-13 00:46:09 11654 [Note] InnoDB: 128 rollback segment(s) are active.
2014-06-13 00:46:09 11654 [Warning] InnoDB: Creating foreign key constraint system tables.
2014-06-13 00:46:09 11654 [Note] InnoDB: Foreign key constraint system tables created
2014-06-13 00:46:09 11654 [Note] InnoDB: Creating tablespace and datafile system tables.
2014-06-13 00:46:09 11654 [Note] InnoDB: Tablespace and datafile system tables created.
2014-06-13 00:46:09 11654 [Note] InnoDB: Waiting for purge to start
2014-06-13 00:46:09 11654 [Note] InnoDB: 5.6.19 started; log sequence number 0
2014-06-13 00:46:10 11654 [Note] Binlog end
2014-06-13 00:46:10 11654 [Note] InnoDB: FTS optimize thread exiting.
2014-06-13 00:46:10 11654 [Note] InnoDB: Starting shutdown...
2014-06-13 00:46:12 11654 [Note] InnoDB: Shutdown completed; log sequence number 1625977
OK

Filling help tables...2014-06-13 00:46:12 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2014-06-13 00:46:12 11678 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-06-13 00:46:12 11678 [Note] InnoDB: The InnoDB memory heap is disabled
2014-06-13 00:46:12 11678 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-06-13 00:46:12 11678 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-06-13 00:46:12 11678 [Note] InnoDB: Using Linux native AIO
2014-06-13 00:46:12 11678 [Note] InnoDB: Using CPU crc32 instructions
2014-06-13 00:46:12 11678 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-06-13 00:46:12 11678 [Note] InnoDB: Completed initialization of buffer pool
2014-06-13 00:46:12 11678 [Note] InnoDB: Highest supported file format is Barracuda.
2014-06-13 00:46:12 11678 [Note] InnoDB: 128 rollback segment(s) are active.
2014-06-13 00:46:12 11678 [Note] InnoDB: Waiting for purge to start
2014-06-13 00:46:12 11678 [Note] InnoDB: 5.6.19 started; log sequence number 1625977
2014-06-13 00:46:12 11678 [Note] Binlog end
2014-06-13 00:46:12 11678 [Note] InnoDB: FTS optimize thread exiting.
2014-06-13 00:46:12 11678 [Note] InnoDB: Starting shutdown...
2014-06-13 00:46:14 11678 [Note] InnoDB: Shutdown completed; log sequence number 1625987
OK

后面还有一些输出,只是一些说明,关于如何准备MySQL的服务、如何设置管理员密码、等等。

好了,到这里,看起来总算恢复都正常了。

继续,设置管理员密码:

# mysqladmin -u root password '********'

6.8 恢复用户数据库

这时,只是重建了系统数据库mysql,原先的用户数据库都没了。要先创建(空的)用户数据库,然后从备份恢复。

进入MySQL命令行:

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 7
Server version: 5.6.19 MySQL Community Server (GPL)

再创建用户数据库:

mysql> CREATE DATABASE `mydb`;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye

这时,mydb数据库还是空的。从之前的数据库备份恢复mydb:

# mysql -u root -p mydb < 2014-06-12_mydb.sql
Enter password:

用户数据库顺利恢复。

6.9 设置服务(daemon)在机器启动时启动

开启mysqld服务的开机启动状态:

# chkconfig mysqld on

再查看:

# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

正确!继续。

6.10 重启web服务器

对应于6.1 停止web服务器,我们要再次开启网站、允许用户访问了:

# service nginx start
Starting nginx:                                            [  OK  ]

测试网站,一切正常!

6.11 修改CakePHP中数据库连接的设置

其实网站还有点儿小问题,不过这和MySQL升级无关,只是作为完整的实际过程,记录在这里。

实际上这时还是无法访问网站的,访问网站主页时遇到下面的错误:

2014-06-13 01:07:23 Warning: Warning (2): mysql_connect() [<a href='http://php.net/function.mysql-connect'>function.mysql-connect</a>]: No such file or directory in [/usr/share/nginx/.../cake/libs/model/datasources/dbo/dbo_mysql.php, line 561]

根据参考资料[11],修改CakePHP 1.3代码中的app/config/database.php:

class DATABASE_CONFIG {
    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'username',
        'password' => 'password',
        'database' => 'mydb',
        'prefix' => ''
        ,'encoding' => 'utf8'
        ,'port' => '/data/mysql/mysql.sock'
    );

如上所示,增加了port的设置。注意,这只适用于*nix系统,Windows上是不需要这样的。另,CakePHP 2.x的设置与此略有不同,请参考相关文档。

这样网站就能正常访问了。

A. 参考资料

MySQL 51 升级到 56应该怎操作?CentOS下以前的环境是用LNMP搭建的所以现在怎才可以升级到56?

源码编译咯,当然注意数据备份,官方有这方面的文档的  

怎在centOS 63 下更改mySQL存放数据库的目录?

附:修改数据文件存储
1、停止服务;
2、移动MySQL数据文件
[[email protected] ~]# mv /var/lib/mysql /home/
3、修改my.cnf配置
[[email protected] ~]# vi /etc/my.cnf
[mysqld]
port = 3306
#socket = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
socket = /home/mysql/mysql.sock
4、修改启动脚本
[[email protected] ~]# vi /etc/init.d/mysql
#datadir=/var/lib/mysql(注释原内容)
datadir=/home/data/mysql
5、重启服务如启动失败,检查目录/文件权限。  

在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程。 1....

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站CentOS系统MySQL双机热备配置,

关键词: