MySQL数据库介绍与安装部署

MySQL数据库介绍与安装部署
任务背景
由于现有业务架构已不能满足当前业务需求,在保证数据完整的前提下,现需要将原有数据库迁移到另外一台单独   的服务器上,在保证原有服务正常的情况下,将原有mysql数据库版本5.6.25升级为5.6.35.
任务要求
1.在业务维护时间段对数据库进行全量备份
2.将MySQL数据库从原有服务器迁移到新服务器上并且升级版本为5.6.35
课程目标
了解Centos7/Centos6的主要不同之处,如服务启动,主机名设置等了解关系型数据库的特点
重点掌握mysql数据库的安装(glibc和源码) 能够进行常见的安装启动排错
涉及知识点
1.官方下载mysql软件包(根据需求)
2.MySQL数据库的安装部署
3.MySQL数据库管理员用户root密码的设置及修改
理论储备
一、MySQL概述
1.数据库的分类
1.1关系型数据库
我们常说的关系型数据库,RDBMS(relational database  management  system),既关系型数据库管理系统; 它是指建立在关系模型上的数据库系统,关系模型是指用二维表的形式表示实体和实体间联系的数据模型。比如:
我们需要将学生的信息(姓名、性别、年龄、学号等)保存到数据库中,其中学生就是一个实体,学生的信息就是       实体的属性。这些数据不是直接放到数据库中,而是有组织有纪律的存放在不同的二维表中,并且实体(学生)与     实体(学生)之间的关系可以设置。

关系型数据库,是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型。  常见的关系型数据库
oracle、mysql、DB2(IBM)、Sybase、SQL server(Microsoft微软)、IBM Informix
特点:容易理解、方便使用、数据一致、读写实时等;
关系型数据库的最大特点就是事务的一致性:所以也在对事物一致性的维护中有很大的开销. 什么是事务:
事务由一条或者多条sql语句组成,在事务中的操作,这些sql语句要么都执行,要么都不执行,这就是一个事务。   举例说明:
1.登陆ATM机,输入密码;
2.连接数据库,验证密码;
3.验证成功,获得用户信息,比如存款余额等;
4.用户输入需要转账的金额,按下确认键;
5.从后台数据库中减掉用户账户上的对应金额(update语句);
6.从后台数据库中给对方账户增加相应的金额(update语句);
7.确认,退卡,走人;
事务特点(ACID):
原子性(Atomicity):
事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。一致性(Consistency):
指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都  必须处于一致性状态,不能破坏关系数据的完整性以及业务逻辑上的一致性。
隔离性(Isolation):
一个事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。隔离性是当多个用户  并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干     扰,多个并发事务之间要相互隔离。
持久性(Durability):

持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到  故障的情况下也不会丢失提交事务的操作。
注意:
在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查  询。
应用场景
1、对数据的一致性要求较高;2、对读写的实时性要求较高;3、典型的银行及支付系统类;
1.2非关系型数据库
非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL( Structured QueryLanguage,结构化查询语言)
常见的非关系型数据库
MangoDB、Redis、Membase等应用场景
1、对数据库性能要求较高;2、需要灵活性更强的IT系统;3、不需要高度的数据一致性;

2.MySQL数据库介绍
MySQL是由MySQL创始人和主要开发人在瑞典创办的一个mysql AB公司。 2008年1月16号  MySQL被Sun公司收购。 2009年04月20日Oracle收购Sun 公司,MySQL 转入Oracle 门下。 Oracle 对MySQL版本重新进行了划分, 分成了社区版和企业版,企业版是需要收费的,当然收费的就会提供更多的功能。
社区版:MySQL Community Edition (GPL)
1、可以看做是企业版的“广泛体验版(小白鼠版)”,未经各个专有系统平台的压力测试和性能测试
2、基于GPL协议发布,可以随意下载使用
3、没有任何官方技术支持服务
企业版:MySQL Enterprise Edition(commercial) 1、提供了比较全面的高级功能、管理工具及技术支持
2、安全性、稳定性、可扩展性比较好
集群版:MySQL Cluster CGE(commercial)
扩充:关于版本的命名方式如何定义?

版本  说明
α(Alpha)版   内测版,内部交流或者专业测试人员测试用。Bug较多,普通用户最好不要安装。
β(Beta)版    公测版,专业爱好者大规模测试用,存在一些缺陷,该版本也不适合一般用户安 装。
γ ( Gamma )版    相当成熟的测试版,与即将发行的正式版相差无几。
Final   正式版本
Free    *版本
Release 发行版本
Standard    标准版本
Mini    迷你精简版本,只有最基本的功能
Upgrade 升级版本
GA(GenerallyAvailable)  开发团队认为该版本是稳定版,可以在较为关键的场合使用。
Retail  零售版

3.MySQL的获取
官网:www.mysql.com
4.MySQL的安装方式
4.1二进制方式安装
RPM版本
命名:MySQL-server-5.6.31-1.el7.x86_64.rpm ,需要在特定linux版本下编译。基于glibc版本
命名:
MySQL-server-5.6.31-1.linux_glibc2.5.x86_64.rpm mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
依赖 1 库,可以安装在通用的Linux系统下
优点:
安装和维护都比较方便,不需要编译。缺点:
可定制性差,可移植性差,一个系统上只能安装一个mysql,不灵活 。
4.2源代码编译安装
命名:mysql-5.6.31.tar.gz,通用的Linux下都可以编译安装。

优点:
可定制性强(安装可以根据用户的需求,只安装所需要的功能) 缺点:
安装复杂,所需要的时间比二进制的安装要长得多
二、MySQL数据库的安装
1.rpm包安装
1.1安装须知
MySQL官方软件包介绍

默认安装目录

默认数据目录

默认端口号

默认socket文件存放路径

1.2安装MySQL数据库我的环境:
MySQL相关软件存放路径:

rpm包安装MySQL步骤:

1.解压到指定路径
# tar -xf MySQL-5.6.25-1.el7.x86_64.rpm-bundle.tar -C /mysql25_rpm

2.安装MySQL数据库
# rpm -ivh MySQL-server-5.6.25-1.el7.x86_64.rpm MySQL-client-5.6.25-1.el7.x86_64.rpm
注意:
Preparing...    ################################# [100%]
file /usr/share/mysql/charsets/README from install of MySQL-server-5.6.25-1.el7.x86_64 conflicts with file from package mariadb-libs-1:5.5.52-1.el7.x86_64

错误原因:
centos7默认安装的mariadb-libs软件包和现在安装的MySQL-server冲突导致。  解决:
卸载mariadb-libs软件包后再次安装。

3.安装完毕后查看输出信息
...
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

4.后续配置

1.3MySQL客户端工具

+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+

默认数据库说明:
information_schema库:
1.对象信息数据库,提供对数据库元数据的访问    ,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限等。
2.在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此你将无法看到与之相关的任何    文件。
视图:是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系    统根据视图的定义去操作与视图相关联的基本表。

mysql库:
1.该mysql数据库是系统数据库。它包含存储MySQL服务器运行时所需的信息的表。比如权限表、对象信息表、日志系    统表、时区系统表、优化器系统表、杂项系统表等。
2.不可以删除,也不要轻易修改这个数据库里面的表息。

performance_schema库:
1.MySQL5.5开始新增一个数据库,主要用于收集数据库服务器性能;并且库里表的存储引擎均PERFORMANCE_SCHEMA,   而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。
2.MySQL5.5默认是关闭的,需要手动开启,在配置文件里添加:
[mysqld] performance_schema=ON

从MySQL5.6开始,默认打开
mysql> show variables like ‘%performance%‘;
+--------------------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------------------+-------+
| performance_schema    | ON    |
...

客户端工具2:
mysqladmin:client for administering a MySQL server  //mysql数据库的客户端管理工具
[root@MissHou ~]# which mysqladmin
/usr/bin/mysqladmin
[root@MissHou ~]# rpm -qf /usr/bin/mysqladmin MySQL-client-5.6.25-1.el7.x86_64

用法:
mysqladmin [options] command [command-options] [command [command-options]] ... [root@MissHou ~]# mysqladmin --help  获取帮助

常用参数:
-h, --host=name 连接主机
-p, --password  密码
-P, --port=#    连接端口
-S, --socket=name 指定socket文件
-u, --user=name 指定用户名

常用命令:
password [new-password] 更改密码
reload  Reload grant tables 刷新授权表
shutdown    Take server down    停止mysql服务
status  Gives a short status message from the server    简短查看数据库状态信息
start-slave Start slave 启动slave stop-slave  Stop slave  停止slave
variables   Prints variables available  打印可用变量
version Get version info from server    查看当前mysql数据库的版本信息

举例:
[root@MissHou ~]# mysqladmin shutdown -p    //关闭数据库
Enter password:

[root@MissHou ~]# mysqladmin password ‘newpass‘ -p  //默认修改数据库管理员root密码Enter password:

[root@MissHou ~]# mysqladmin password 123 -uroot -h localhost -p    //也可以指定用户和主机Enter password:

[root@MissHou ~]# mysqladmin status -p  //简短查看数据库的状态信息Enter password:
Uptime: 788 Threads: 1 Questions: 18 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.022

[root@MissHou ~]# mysqladmin proc status -p Enter password:
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host  | db | Command | Time | State | Info    |
+----+------+-----------+----+---------+------+-------+------------------+
| 8  | root | localhost |   | Query | 0 | init  | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
Uptime: 799 Threads: 1 Questions: 21 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.026

[root@MissHou ~]# mysqladmin proc extended-status -p    //查看扩展信息,比如变量

[root@MissHou ~]# mysqladmin create db01 -p //创建数据库
[root@MissHou ~]# mysqladmin drop db01 -p   //删除数据库

2.glibc包安装
2.1安装须知
软件包介绍

默认相关选项

2.2安装MySQL数据库
参考官当:MySQL-glibc安装手册需求:

3.手动的初始化数据库(重点)
[root@mysql01 mysql35]# scripts/mysql_install_db --user=mysql --basedir=/data/msyql35 -- datadir=/data/mysql35/data

[root@mysql01 mysql35]# ll data/ total 110600
-rw-rw----. 1 mysql mysql 12582912 Jul 31 14:44 ibdata1
-rw-rw----. 1 mysql mysql 50331648 Jul 31 14:44 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 Jul 31 14:44 ib_logfile1
drwx------. 2 mysql mysql   4096 Jul 31 14:44 mysql
drwx------. 2 mysql mysql   4096 Jul 31 14:44 performance_schema
drwxr-xr-x. 2 mysql mysql   20 Jul 31 11:50 test

4.启动数据库

使用service方式启动mysql数据库:
[root@mysql01 mysql35]# cp support-files/mysql.server /etc/init.d/mysql35 [root@mysql01 mysql35]# ll /etc/init.d/mysql35
-rwxr-xr-x. 1 root root 10875 Jul 31 14:51 /etc/init.d/mysql35

[root@mysql01 mysql35]# service mysql35 start Unit mysql35.service could not be found.
/etc/init.d/mysql35: line 276: cd: /usr/local/mysql: No such file or directory Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/mysqld_safe) [root@mysql01 mysql35]# vim /etc/init.d/mysql35

以上错误原因是因为默认的安装路径为:/usr/local/mysql;但是实际上我是/data/mysql35;所以需要修改脚本文件里   的mysql的安装路径。

[root@mysql01 mysql35]# service mysql35 start Unit mysql35.service could not be found.
Starting MySQL.Logging to ‘/data/mysql35/data/mysql01.itcast.cc.err‘. 180731 14:59:26 mysqld_safe The file /usr/local/mysql/bin/mysqld
does not exist or is not executable. Please cd to the mysql installation directory and restart this script from there as follows:
./bin/mysqld_safe&
See http://dev.mysql.com/doc/mysql/en/mysqld-safe.html for more information
ERROR! The server quit without updating PID file (/data/mysql35/data/mysql01.itcast.cc.pid).

解决:service  mysql35启动的方式会调用mysqld_safe脚本去启动mysqld程序,如果启动不成功则需要修改、/data/mysql35/bin/mysqld_safe文件里的内容,将/usr/local/mysql修改成/data/mysql35

5.测试验证
[root@mysql01 bin]# service mysql35 start Unit mysql35.service could not be found. Starting MySQL. SUCCESS!
[root@mysql01 bin]# ps -ef|grep mysql
root    6755    1  0 15:40 pts/0    00:00:00 /bin/sh /data/mysql35/bin/mysqld_safe -- datadir=/data/mysql35/data --pid-file=/data/mysql35/data/mysql01.itcast.cc.pid

详细步骤参考:

说明:由于之前已经安装了rpm包的mysql数据库,所以mysql用户和mysql组已经存在,故不需再创建。
1.根据当前环境,解压安装包到指定路径
[root@db01 installer]# pwd
/soft/installer
[root@db01 installer]# mkdir mysql35
[root@MissHou mysql]# tar -xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz -C mysql35 [root@MissHou mysql]# cd mysql35
[root@MissHou mysql35]# ls
mysql-5.6.35-linux-glibc2.5-x86_64

2.将解压后的目录里所有文件拷贝到安装路径(默认/usr/local/mysql) 如果没有该目录需要事先创建:
[root@MissHou mysql35]# mkdir /usr/local/mysql
将解压目录里的所有文件拷贝到/usr/local/mysql目录中:
[root@MissHou mysql35]# cp -a mysql-5.6.35-linux-glibc2.5-x86_64/* /usr/local/mysql/

3.修改相应目录的权限
[root@MissHou mysql35]# chown -R mysql. /usr/local/mysql/

4.初始化数据库
[root@MissHou mysql]# pwd
/usr/local/mysql
[root@MissHou mysql]# scripts/mysql_install_db --user=mysql
验证:
[root@MissHou mysql]# ls data/
ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema test
注意:
MySQL 5.6.8, mysql_install_db creates a default option file named my.cnf in the base installation directory.

5.启动数据库
注意:由于之前已经安装了rpm版本的mysql数据库,端口默认都是3306,所以先停止之前的mysql数据库
[root@MissHou mysql]# bin/mysqld_safe --user=mysql &    放到后台启动

6.查看mysql是否启动成功
[root@MissHou mysql]# netstat -nlp|grep mysqld
tcp6    0   0 :::3306   :::*    LISTEN
4987/./bin/mysqld
unix 2  [ ACC ] STREAM  LISTENING   73291   4987/./bin/mysqld   /tmp/mysql.sock

7.拷贝启动脚本到/etc/init.d/下 [可选项]
[root@MissHou mysql]# cp support-files/mysql.server /etc/init.d/mysql35

8.使用service命令来管理mysql服务[root@MissHou mysql]# service mysql35 stop [root@MissHou mysql]# service mysql35 start

扩展:
如何将mysql服务交给systemd来管理?

[Unit]
Description=MySQL Community Server After=network.target After=syslog.target

[Install]
WantedBy=multi-user.target Alias=mysql.service

[Service] User=mysql Group=mysql

# Execute pre and post scripts as root PermissionsStartOnly=true

# Needed to create system tables etc. #ExecStartPre=/usr/bin/mysql-systemd-start pre

# Start main service ExecStart=/usr/local/mysql/bin/mysqld_safe

# Don‘t signal startup success before a ping works #ExecStartPost=/usr/bin/mysql-systemd-start post

# Give up if ping don‘t get an answer TimeoutSec=600

Restart=always PrivateTmp=false

2.3启动多实例
问题描述:
二进制的rpm包和glibc包安装mysql后,默认端口都是3306,如果在同一台主机上使用以上2种方式安装多个
mysql实例后,默认情况下只能启动一个mysql实例。

单机如何启动多实例?
了解MySQL的启动过程

需要注意的地方

单机启动多实例的思路
编写不同的my.cnf文件来指定不同的端口、socket文件! 配置文件的编写

2.4总结
二进制rpm包和glibc包方式安装的优缺点:

安装方式    优点  缺点
rpm 安装卸载简单  可定制性差
glibc   可定制性相比rpm包灵活些   安装相比rpm包复杂些,需要手动初始化数据库

3.源码安装
参考官当:MySQL-Source安装配置手册
源码安装三步曲:配置——>编译——>安装

3.1安装须知
软件包介绍

默认相关选项

3.2安装需求

3.2 了解配置选项
常用配置选项

配置选项    描述  默认值 建议值
CMAKE_INSTALL_PREFIX    安装基目录(basedir)  /usr/local/mysql    根据需求
MYSQL_DATADIR   数据目录(datadir)       根据需求
SYSCONFDIR  默认配置文件my.cnf路径      /etc
MYSQL_TCP_PORT  TCP/IP端口    3306    非默认端口
MYSQL_UNIX_ADDR 套接字socket文件路径   /tmp/mysql.sock $basedir/
DEFAULT_CHARSET 默认字符集   latin1  utf8mb4
DEFAULT_COLLATION   默认校验规则  latin1_swedish_ci   utf8mb4_general_ci
WITH_EXTRA_CHARSETS 扩展字符集   all all
ENABLED_LOCAL_INFILE    是否启用本地加载外部数据文件功能    OFF 建议开启
存储引擎相关配置项

3.2 安装步骤
下载软件包并解压到临时目录

根据需求进行配置

编译

安装

3.2 后续配置
初始化数据库

拷贝启动脚本到/etc/init.d/目录

启动数据库

安全配置

环境变量配置

mysql客户端程序连接mysql方式

三、设置管理员root密码
1.设置密码或修改新密码

2.忘记密码重置密码

3.MySQL5.7版本区别

四、扩展补充
1.字符集与字符编码
字符:字符是各种文字和符号的总称,包括各个国家文字、标点符号、图形符号、数字等。
字符集:字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,计算机要准确的处理各种字  符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。也就是说字符编码是字符集的实现方式。
需要注意的是:有的字符编码和字符集的名称是一致的。
常见的字符集:

常见的字符编码:

MySQL中字符集的建议
1.非常肯定只有中文终端用户时,可选择gbk/gb2312字符集,否则选用utf8mb4字符集。
2.为了方便数据迁移、以及多种终端展示,最好使用utf8mb4。
3.在mysql中utf8最多存放3个字节,而非实际的1-4个字节,为了不必要的麻烦建议utf8mb4。
4.字符无需区分大小写时,采用默认的xxx_general_ci校验集,否则选择xxx_bin校验集(生产环境中,尽量不要修  改校验集).
根据字符集查看校验集

2.systemd管理mysql
注意:以下mysqld.service文件内容适用于mysql 5.7版本以后(参考)

[root@misshou ~]#vim /usr/lib/systemd/system/mysqld.service [Unit]  #该小节包含与单元类型无关的通用信息
#描述信息
Description=MySQL Server #帮助手册
Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
#定义unit启动顺序,After表示当前unit晚于以下两个单元启动
After=network.target After=syslog.target
[Install] #该小节包含单元的启用信息,systemctl的enable与disable命令在启用/停用单元时才会使用此小节。
WantedBy=multi-user.target
#依赖multi-user.target单元,执行systemctl enable 启用命令之后,将会建立一个指向该单元文件的软链接/etc/systemd/system/multi-user.target.wants/mysql.service,表示将mysql.service包含到 multi- user.target目标中,这样,当启动multi-user.target目标时,将会自动起动mysql.service服务。 同时, systemctl disable 命令将会删除这个软连接。

[Service] User=mysql Group=mysql
#设置进程的启动类型, 必须设为 simple, forking, oneshot, dbus, notify, idle之一。
如果设为forking,那么表示ExecStart=xxx进程将会在启动过程中使用fork()系统调用。      这是传统UNIX守护进程的经典做法。也就是当所有的通信渠道都已建好、启动亦已成功之后,父进程将会退出,而子进程将作为该服务的主进程继    续运行。 对于此种进程,建议同时设置 PIDFile=xxx选项,以帮助systemd准确定位该服务的主进程,进而加快后继单元的启动速度。

如果设置为simple表示ExecStart=xxx进程就是该服务的主进程. Type=forking
PIDFile=/var/run/mysqld/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
#设置该服务允许的最大启动时长。    如果守护进程未能在限定的时长内发出"启动完毕"的信号,那么该服务将被视为启动失败,并会被关闭。 如果未指定时间单位,那么将视为以秒为单位。 例如设为"20"等价于设为"20s"。 设为"infinity" 则表示永不超时。 当 Type=oneshot 时, 默认值为 "infinity" (永不超时), 否则默认值等于DefaultTimeoutStartSec= 的值(参见 systemd-system.conf(5) 手册)。
TimeoutSec=0
# Execute pre and post scripts as root
#设为yes表示所有与权限相关的执行选项(例如 User= 之类的选项),仅对 ExecStart= 中的程序有效,而对ExecStartPre=, ExecStartPost=, ExecReload=, ExecStop=, ExecStopPost= 中的程序无效。 默认值 no表示所有与权限相关的执行选项,对所有 Exec*= 系列选项中的程序都有效。
PermissionsStartOnly=true
# Needed to create system tables
#设置在执行ExecStart=之前执行的命令行ExecStartPre=/usr/bin/mysqld_pre_systemd # Start main service
#在启动该服务时需要执行的命令行(命令+参数)。
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS # Use this to switch malloc implementation
#设置进程的环境变量,文件必须用绝对路径表示(可以包含通配符)。但可在路径前加上"-"前缀表示忽略不存在的文件。
可以多次使用此选项,以从多个不同的文件中读取设置。若设为空,则表示清空所有先前已经从文件中读取的环境变     量。
EnvironmentFile=-/etc/sysconfig/mysql # Sets open_files_limit
#进程打开文件的数量(文件描述符的数量),ulimit -n
LimitNOFILE = 5000
#当服务进程正常退出、异常退出、被杀死、超时的时候,是否重新启动该服务。on-failure表示仅在服务进程异常退     出时重启
Restart=on-failure
#可以设为一系列以空格分隔的数字退出码或信号名称,当进程的退出码或收到的信号与此处的设置匹配时,无论Restart=  是如何设置的,该服务都将无条件的禁止重新启动。这里1表示当进程的退出码为1和SIGHUP信号时不会导致该服务被自动重启。
RestartPreventExitStatus=1
#设为true表示在进程的文件系统名字空间中挂载私有的/tmp与/var/tmp目录,也就是不与名字空间外的其他进程共享    临时目录。这样做会增加进程的临时文件安全性,但同时也让进程之间无法通过/tmp或/var/tmp目录进行通信。同时,    当服务停止之后,所有先前在临时目录中创建的文件都将被删除。默认是false。注意,因为此选项的设置有可能在实际     上无法落实(例如挂载名字空间不可用),    所以,在编写单元文件的时候,不应该将单元的安全依赖于此选项必然生效的假定。
PrivateTmp=false

以下文件内容,适用于mysql5.6版本(参考):

五、启动报错总结

任务解决方案

原有服务器:centos 6.5系统 10.1.1.250 部署LAMP环境,并搭建2个网站新服务器:centos 7.5系统   10.1.1.5  准备部署MySQL-5.6.35版本

停止原有服务器上的相关服务,以下操作在旧服务器上进行:
IP:10.1.1.250
hostname:lamp.itcast.cc

1.先停止应用服务apache和数据库[root@lamp ~]# service apache stop [root@lamp ~]# service mysql25 stop Shutting down MySQL.. SUCCESS!

Centos 7.5系统用来安装最新版本的MySQL数据库,以下操作在新版本上进行: IP:10.1.1.5
hostname:db01.misshou.cc

1.下载mysql软件
[root@db01 installer]# du -sh mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 301M mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
2.安装规划
安装目录(basedir):/usr/local/mysql
数据库目录(datadir):/usr/local/mysql/data 端口:3307
socket文件:/usr/lcoal/mysql/mysql.sock
错误日志文件:/usr/local/mysql/data/mysql3307.err

3.进行安装
1)解压软件包
[root@db01 installer]# tar -xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 2)进入到/usr/local目录里软连接
[root@db01 installer]# cd /usr/local/
[root@db01 local]# ln -s /soft/installer/mysql-5.6.35-linux-glibc2.5-x86_64 mysql 3)初始化数据库
创建mysql用户:
[root@db01 mysql]# id mysql id: mysql: no such user
[root@db01 mysql]# useradd -r -s /sbin/nologin mysql [root@db01 mysql]# id mysql
uid=997(mysql) gid=995(mysql) 组 =995(mysql)

更改mysql的安装目录的权限:
[root@db01 mysql]# chown -R mysql.mysql /usr/local/mysql/ [root@db01 mysql]# ll -d /usr/local/mysql/
drwxr-xr-x 13 mysql mysql 191 10 月 9 10:26 /usr/local/mysql/

初始化数据库:
删除系统默认自带的/etc/my.cnf文件
[root@db01 mysql]# scripts/mysql_install_db --user=mysql
注意:
如果忘记删除原有/etc/my.cnf文件,那么可以使用以下命令解决:

记得创建/usr/local/mysql/my.cnf/my.cnf文件

[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data port=3307
socket=/usr/local/mysql/mysql.sock
log-error=/usr/local/mysql/data/mysql3307.err

[root@db01 mysql]# scripts/mysql_install_db --user=mysql --defaults-file=/usr/local/mysql/my.cnf

或者直接修改/etc/my.cnf文件来改变数据目录和安装目录即可

4)启动数据库修改配置文件
[root@db01 mysql]# sed -ri ‘/^#|^$/d‘ my.cnf [root@db01 mysql]# cat my.cnf
[mysqld]
basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3307
socket = /usr/local/mysql/mysql.sock
log-error = /usr/local/mysql/data/mysql3307.err sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
启动数据库

[root@db01 mysql]# cp support-files/mysql.server /etc/init.d/mysql [root@db01 mysql]# service mysql start
Starting MySQL.Logging to ‘/usr/local/mysql/data/mysql3307.err‘. SUCCESS!

5)修改数据库密码略

将原有环境中的mysql数据库拷贝到新服务器中:
1.先删除新环境中/usr/local/mysql/data/目录下的所有文件
rm -rf /usr/local/mysql/data/*

2.使用rsync同步原有数据库的文件到新数据中
rsync -av 10.1.1.250:/usr/local/mysql/data/ /usr/local/mysql/data

3.直接启动新的数据库,并且检查日志文件(查看是否有选项不兼容) service mysql start

4.使用mysql_upgrade命令检查数据文件的兼容性
mysql_upgrade -p123

注意:
在实际的环境中,建议使用-s参数,不检查业务表,只检查系统文件

前端应用程序连接远程的mysql数据库,以下操作在原来的服务器上进行:
10.1.1.250

1.修改php连接mysql的配置文件
[root@lamp ~]# find / -name php.ini
/usr/local/lib/php.ini
[root@lamp ~]# vim /usr/local/lib/php.ini [MySQL]
mysql.default_port = 3307
mysql.default_host = 10.1.1.5

[MySQLi]
mysql.default_port = 3307
mysql.default_host = 10.1.1.5

2.修改www.myadmin.cc网站所在的数据目录里的配置文件
[root@lamp admin]# pwd
/www/admin
[root@lamp admin]# vim config.inc.php
/* Server parameters */
$cfg[‘Servers‘][$i][‘host‘] = ‘10.1.1.5‘;
$cfg[‘Servers‘][$i][‘connect_type‘] = ‘tcp‘;
$cfg[‘Servers‘][$i][‘compress‘] = false;
$cfg[‘Servers‘][$i][‘AllowNoPassword‘] = false;

3.修改www.myblog.net网站所在数据库目录的配置文件

[root@lamp myblog]# pwd
/www/myblog
[root@lamp myblog]# vim wp-config.php
...
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define(‘DB_NAME‘, ‘myblog‘);

/** MySQL数据库用户名 */ define(‘DB_USER‘, ‘root‘);

/** MySQL 数 据 库 密 码 */ define(‘DB_PASSWORD‘, ‘123‘);

/** MySQL 主 机 */ define(‘DB_HOST‘, ‘10.1.1.5‘);

/** 创建数据表时默认的文字编码 */ define(‘DB_CHARSET‘, ‘utf8‘);

4.新的mysql数据库需要给root@10.1.1.250用户授权
mysql> grant all on *.* to ‘root‘@‘10.1.1.250‘ identified by ‘123‘; Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

5.启动web服务

注解:

1. glibc是GNU发布的libc库,即c运行库;glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.?

MySQL数据库介绍与安装部署

上一篇:企业架构NOSQL数据库之MongoDB


下一篇:关于 MYSQL错误: ERROR 1205: Lock wait timeout exceeded