在类型中就能有在Linux下安装数据库的需要

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数据库的备份方式——双机热备。

2  预期读者

  • 数通畅联新职工

  • 周围本领爱好者

3  碰到消息

操作系统:CentOS 6.4

MySQL:版本为MySQL5.6

4  名词解释

Linux:Linux是风姿罗曼蒂克套无需付费使用和轻巧传播的类Unix操作系统,是一个基于POSIX和UNIX的多客户、多任务、辅助二十四线程和多CPU的操作系统。它能运维至关心注重要的UNIX工具软件、应用程序和网络左券。它扶持33人和六十几人硬件。Linux承接了Unix以网络为骨干的设计理念,是三个天性稳固的多客商网络操作系统。

CentOS:(CommunityEnterprise Operating
System,粤语意思是:社区商厦操作系统)是Linux发行版之一,它是发源于Red
Hat Enterprise
Linux依据开放源代码规定释出的源代码所编写翻译而成。由于来自同生龙活虎的源代码,由此某个供给高度牢固的服务器以CentOS替代商业版的Red
Hat Enterprise Linux使用。两个的两样,在于CentOS并不含有密闭源代码软件。

MySQL:MySQL是三个关系型数据库管理体系,由SverigeMySQL AB
集团支付,前段时间属于 Oracle 旗下产品。MySQL
最盛行的关系型数据库管理类别,在 WEB 应用方面MySQL是最佳的 路虎极光DBMS
(Relational Database Management System,关周全据库管理类别)
应用程式之风华正茂。

MYISAM:MySQL二种常见的积累引擎之生龙活虎,特点是表数据文件和表索引文件都是独自存放在,相符记录点滴2004万之下、并发量不是相当高的条件,相符简单的查询,不帮忙工作,轻易并发数量遗失,表损坏,经常需求修补,修复往往也产生数据错失,切合读多写少的条件

INNODB:MySQL三种分布的蕴藏引擎之后生可畏,特点是表数据文件和表索引文件是手拉手四个文件,适合广大数据,小框框的数目反而功效不高,符合併发量高的条件、复杂的询问,支持职业,辅助数据自动修复,保证了数额错失起码

5  操作步骤

5.1  安装方式

在CentOS上安装MySQL的办法差不离能够分成两类,风姿罗曼蒂克种是互连网景况交通的意况下,能够通过YUM库联网安装,另风度翩翩种是经过本地上传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

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

在类型中就能有在Linux下安装数据库的需要。指令:例如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%]

5.2   配置进程

在类型中就能有在Linux下安装数据库的需要。5.2.1   备份情势

在类型中就能有在Linux下安装数据库的需要。MySQL的常用备份情势可分为两种:

  •  逻辑备份

优点:最大益处是能够与正在运转的MySQL自动协作专门的职业,在运营时期能够保险备份是及时的点,它会自动将相应操作的表锁定,不允许其余客户更正(只好访谈),只怕会阻拦改善操作,SQL文件通用方便移植。

缺点:备份的进度非常快,假设是数据量非常多的时候,就很耗时间。假如数据库服务器处在提必要客商服务状态,在此段长期操作进度中,意味着要锁定表(日常是读锁定,只可以读不能够写入数据),那么服务就能够潜濡默化的。

  • 大意备份

向来拷贝只适用于MYISAM类型的表。那连串型的表是与机械和工具独立的。但实际意况是,设计数据库的时候不容许全部采纳MYISAM类型表。也不恐怕:因为MYISAM类型表与机械和工具独立,方便移植,于是就分选这种表,那并不是接纳它的说辞。

缺点:无法去操作正在运营的MySQL服务器(在拷贝的经过中有客户通过应用程序访谈更新数据,那样就无法备份那时的数码)恐怕无法移植到任何机器上去。

越来越多的情形是,会依照工作性子(比如须要帮衬专门的职业机制就务须利用INNODB),查询速度和劳务属性来抉择表类型的。

  • 双机热备份

MySQL数据库未有增量备份的体制。当数据量太大的时候备份是二个超大的标题。幸而MySQL数据库提供了一种为主备份的建制(相当于双机热备)

优点:切合数据量大的时候。大的互连网公司对此MySQL数据备份,都以利用热机备份。搭建多台数据库服务器,举办主从复制。

落到实处机制:对此贰个MySQL服务器,日常常有多个线程来肩负复制和被复制。当张开复制之后:

  • 用作主服务器Master,会把本身的每一遍变动都记录到二进制日志 binlog
    中。(从服务器会担当来读取那么些log,然后在和煦这里再实行叁次。)

  • 作为从服务器Slave,会用master上的账号登入到master上,读取master的binlog,写入到温馨的连结日志
    Relaylog,然后自个儿的SQL线程会肩负读取那在那之中继日志,并实行二遍。 

在杜撰双机热备时,须要当心,日常意义上的双机热备都会有三个切换进程,这几个切换进程或许是一分钟左右。在切换进度中,服务是有望长时间暂停的。可是,当切换达成后,服务将健康复苏。因而,双机热备不是无缝、不间断的,但它能够保险在现身系统故障时,能够神速恢复生机平常的劳动,业务不致受到震慑。而生机勃勃旦没有双机热备,则只要现身服务器故障,大概会现身多少个时辰的劳动中断,对职业的熏陶就可能会招致异常惨烈的损失。

在类型中就能有在Linux下安装数据库的需要。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.3   常见难题

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

6  相关链接

CentOS镜像下载:

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图