必赢365net手机版mariadb安装和多实例配置

正文介绍mysql各个安装方式(rpm/glibc通用二进制/源码编写翻译)以致多实例配置的方式,没什么手艺,算是风度翩翩篇方法合併小说。

正文目录:
1.
mysql单实例安装
  1.1
rpm安装mysql
  1.2
通用二进制包安装mysql
    1.2.1
开端化数据库
    1.2.2
安装后的标准化操作
  1.3
编写翻译安装
    1.3.1
编写翻译安装进度
    1.3.2
初始化
    1.3.3
规范化
    1.3.4
cmake编写翻译MySQL时的选料表达
2.
mysql多实例配置
  2.1
mysql多实例配置进程
  2.2
提供sysV服务管理脚本
  2.3
提供systemd服务管理脚本
3.
mariadb安装

  1. 本文的设置情状为centos6.6和centos7.2,但相当多地点都是centos6.6作为示范示例。
  2. 本文安装MySQL时,它们的周转地点为mysql,数据目录datadir为/mydata/data。
  3. pid文件路线设置为/mydata/data/mysql.pid或/mydata/data/`hostname`.pid。
  4. 鉴于mariadb和mysql
    5层层并不曾太大的不等。因而仅详细浮现mysql的设置。最终将简单提大器晚成提mariadb。

  5. mysql单实例安装

正文介绍mysql各类安装格局(rpm/glibc通用二进制/源码编写翻译)以至多实例配置的措施,没什么技巧,算是风度翩翩篇方法归拢小说。

1.1 rpm包安装mysql

直接yum安装mysql-server就可以。但只顾两点:

(1).centos7上,yum默许将安装mariadb。
(2).centos6上,yum私下认可安装的版本比较老(5.1版),要设置mysql 5.6或mysql
5.7,可以从官方下载,也能够运用以下配置的yum源。

release=`awk  -F "[ .]" '{print $4}' /etc/redhat-release`
cat <<eof>/etc/yum.repos.d/mysql.repo
[mysql56]
name=MySQL
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/$release/$basearch/
enabled=1
gpgcheck=0

[mysql57]
name=MySQL
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/$release/$basearch/
enabled=1
gpgcheck=0
eof

其余,在sohu镜像站点也提供了mysql的依次rpm版本。地址:http://mirrors.sohu.com/mysql/

还需注意,配置了yum源后装置Mysql将选取mysql-community-*安装各mysql相关包,例如mysql-community-server。

安装完毕后,运行mysqld。

shell> service mysqld start      # 或 systemctl start mysqld

设若开发银行退步,则恐怕须要最早化MySQL。

shell> mkdir -p /mydata/data
shell> chown -R mysql.mysql /mydata/data
shell> mysql_install_db --datadir=/mydata/data --user=mysql

借使选拔mysql_install_db初阶化时提示该命令已经屏弃(5.7本子大概会这么提醒),那么使用上面包车型地铁授命进行早先化。

# 初始化时,为root@localhost创建一个临时密码存放在mysql.log中
shell> mysqld --initialize --datadir=/mydata/data --user=mysql
# 初始化时,为root@localhost创建一个空密码
shell> mysqld --initialize-insecure --datadir=/mydata/data --user=mysql

最早化后再起步,运转成功后总是数据库并修改root@localhost客商的密码,然后退出。

shell> mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> q

若是前方使用mysqld --initialize早先化数据库,那么将会为”root@localhost”成立三个密码,那将使得不能直接选取mysql一声令下连接数据库。能够先从mysql.log中筛选出成立的有时密码,然后再手动矫正为”123456″。

shell> grep 'temporary password' /var/log/mysqld.log
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> q
  1. 本文的装置意况为centos6.6和centos7.2,但大相当多地方都是centos6.6作为示范示例。
  2. 本文安装MySQL时,它们的运营地方为mysql,数据目录datadir为/mydata/data。
  3. pid文件路线设置为/mydata/data/mysql.pid或/mydata/data/`hostname`.pid。
  4. 出于mariadb和mysql
    5雨后冬笋并未太大的不及。由此仅详细显示mysql的装置。最终将简单提生机勃勃提mariadb。

  5. mysql单实例安装

1.2 通用二进制包安装mysql

通用二进制包也就是windows中的便携版软件,解压后有一些配置下就可以间接接收,不用安装。

mysql通用二进制版官方下载地址:

  • MySQL 5.6通用二进制包下载:
    https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35-linux-glibc2.12-x86_64.tar.gz
  • MySQL 5.7通用二进制包下载:
    https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.12-x86_64.tar.gz

中间文件中的glibc2.12意味着的是Linux系统的glibc版本要比2.12新,可以选拔ldd --version查看glibc版本。在CentOS
6上glibc暗中同意正是2.12的,所以不要顾虑。

shell> tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
shell> ln -s /usr/local/mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql

1.1 rpm包安装mysql

直接yum安装mysql-server就可以。但只顾两点:

(1).centos7上,yum私下认可将安装mariadb。
(2).centos6上,yum默许安装的版本相比较老(5.1版),要设置mysql 5.6或mysql
5.7,能够从官方下载,也能够接收以下配置的yum源。

cat <<eof>/etc/yum.repos.d/mysql.repo
[mysql]
name=MySQL
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
# baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
# baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
# baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0
eof

其它,在sohu镜像站点也提供了mysql的相继rpm版本。地址:http://mirrors.sohu.com/mysql/

还需注意,配置了yum源后安装Mysql将动用mysql-community-*安装各mysql相关包,例如mysql-community-server。

安装达成后,运转mysqld。

shell> service mysqld start      # 或 systemctl start mysqld

倘诺开行战败,则可能需求开端化MySQL。

shell> mkdir -p /mydata/data
shell> chown -R mysql.mysql /mydata/data
shell> mysql_install_db --datadir=/mydata/data --user=mysql

举个例子运用mysql_install_db开首化时提示该命令已经撤除(5.7本子大概会这么提醒),那么使用上面包车型客车通令进行初步化。

# 初始化时,为root@localhost创建一个临时密码存放在mysql.log中
shell> mysqld --initialize --datadir=/mydata/data --user=mysql
# 初始化时,为root@localhost创建一个空密码
shell> mysqld --initialize-insecure --datadir=/mydata/data --user=mysql

伊始化后再起步,运营成功后总是数据库并纠正root@localhost顾客的密码,然后退出。

shell> mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> q

假定前方使用mysqld --initialize初阶化数据库,那么将会为”root@localhost”成立多个密码,那将使得无法直接采纳mysql一声令下连接数据库。能够先从mysql.log中筛选出创设的一时密码,然后再手动改善为”123456″。

shell> grep 'temporary password' /var/log/mysqld.log
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> q

1.2.1 开始化数据库

不应用rpm包安装,就要求对mysql实行初叶化以创建一些文本、库和点名一些参数。但在伊始化mysql前,要优先做一些操作。

shell> mkdir -p /mydata/data
shell> useradd -r -s /sbin/nologin mysql
shell> chown -R mysql.mysql /usr/local/mysql
shell> chown -R mysql.mysql /mydata/data
shell> cd /usr/local/mysql
shell> scripts/mysql_install_db --datadir=/mydata/data --user=mysql
shell> chown -R root.root /usr/local/mysql

执行mysql_install_db时会在/tmp下创建有时表,所以mysql客户要求对/tmp有写权限,不然推行实例牵头化脚本时也许会报肖似下边包车型地铁错误:
必赢365net手机版,ERROR: 1 Can’t create/write to file ‘/tmp/#sql_7a0e_0.MYI’ (Errcode:
13)

那表达未有写权限,所以须要修正/tmp目录的权能:

chmod 1777 /tmp

同样,mysql_install_db千帆竞发时假如提醒已抛弃,则应用如下方法:

bin/mysqld --initialize-insecure --datadir=/mydata/data --user=mysql

开端化实现后,提供配置文件和劳动运转脚本。

shell> cp -a support-files/mysql.server /etc/init.d/mysqld
shell> cp -a support-files/my-default.cnf /etc/my.cnf  

# 修改my.cnf的datadir
shell> vim /etc/my.cnf 
[mysqld]
datadir=/mydata/data

如若是centos7,则提供如下服务运行脚本(如有供给,改过pid文件路线)。

shell> cat /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
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

Type=forking

PIDFile=/var/run/mysqld/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Start main service
ExecStart=/usr/local/mysql-5.7.19/bin/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
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false

修改”root@localhost”密码。

shell> mysql
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> q

1.2 通用二进制包安装mysql

通用二进制包也就是windows中的便携版软件,解压后有一些配置下就能够直接选取,不用安装。

mysql通用二进制版官方下载地址:

  • MySQL 5.6通用二进制包下载:
    https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35-linux-glibc2.12-x86_64.tar.gz
  • MySQL 5.7通用二进制包下载:
    https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.12-x86_64.tar.gz

内部文件中的glibc2.12表示的是Linux系统的glibc版本要比2.12新,能够行使ldd --version翻看glibc版本。在CentOS
6上glibc暗许就是2.12的,所以不必操心。

shell> tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
shell> ln -s /usr/local/mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql

1.2.2 安装后的标准化操作

编译安装或通用二进制安装后,平日都亟待做一些额外的操作,富含安装意况变量、输出头文件和库文件、设置man路线。

echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
echo "MANPATH /usr/local/mysql/man" >>/etc/man.config

echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
ln -s /usr/local/mysql/include /usr/include/mysql

1.2.1 带头化数据库

不利用rpm包安装,就必要对mysql进行开首化以创造一些文书、库和点名一些参数。但在先导化mysql前,要先行做一些操作。

shell> mkdir -p /mydata/data
shell> useradd -r -s /sbin/nologin mysql
shell> chown -R mysql.mysql /usr/local/mysql
shell> chown -R mysql.mysql /mydata/data
shell> cd /usr/local/mysql
shell> scripts/mysql_install_db --datadir=/mydata/data --user=mysql
shell> chown -R root.root /usr/local/mysql

执行mysql_install_db时会在/tmp下开创有的时候表,所以mysql顾客须求对/tmp有写权限,不然实行实例伊始化脚本时可能会报形似下边包车型大巴荒诞:
ERROR: 1 Can’t create/write to file ‘/tmp/#sql_7a0e_0.MYI’ (Errcode:
13)

那申明未有写权限,所以须要改良/tmp目录的权位:

chmod 1777 /tmp

同样,mysql_install_db千帆竞发时风度翩翩旦提示已甩掉,则动用如下方法:

bin/mysqld --initialize-insecure --datadir=/mydata/data --user=mysql

开始化完毕后,提供配置文件和劳动运营脚本。

shell> cp -a support-files/mysql.server /etc/init.d/mysqld
shell> cp -a support-files/my-default.cnf /etc/my.cnf  

# 修改my.cnf的datadir
shell> vim /etc/my.cnf 
[mysqld]
datadir=/mydata/data

即使是centos7,则提供如下服务运行脚本(如有要求,改过pid文件路线)。

shell> cat /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
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

Type=forking

PIDFile=/var/run/mysqld/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Start main service
ExecStart=/usr/local/mysql-5.7.19/bin/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
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false

修改”root@localhost”密码。

shell> mysql
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> q

1.3 编写翻译源码安装mysql

建议别没事找事,尝试编写翻译装MySQL,完全部是徒劳无益的事。若是的确要编写翻译安装,把my.cnf、服务管理脚本、编写翻译选项等事关到运维文件路线的项保证同等,举个例子pid文件、socket文件、datadir路线、log文件。并确认保证mysql涉及到的目录全部者和所属组都以mysql,比如暗许的pid路线/var/run/mysql/。

mysql源码包下载地址:

  • MySQL 5.6源码包下载:
    https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.37.tar.gz

  • MySQL 5.7源码包下载:
    https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz

1.2.2 安装后的标准化操作

编写翻译安装或通用二进制安装后,常常都亟需做一些非常的操作,富含安装情形变量、输出头文件和库文件、设置man路线。

echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
echo "MANPATH /usr/local/mysql/man" >>/etc/man.config

echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
ln -s /usr/local/mysql/include /usr/include/mysql

1.3.1 编译安装进度

关于编写翻译选项,见下文。

利用以下命令安装mysql 5.6。

yum -y install ncurses-devel cmake
tar xf ~/mysql-5.6.37.tar.gz
cd ~/mysql-5.6.37
cmake . 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.37 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii 
-DENABLED_LOCAL_INFILE=ON 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_FEDERATED_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 
-DWITH_FAST_MUTEXES=1 
-DWITH_EMBEDDED_SERVER=1 
-DWITH_SSL=bundled 
-DWITH_DEBUG=0 
make
make install

动用以下命令安装mysql
5.7。比上述多了最后一个boost相关设置项,不设置此项或许会cmake失败。

yum -y install ncurses-devel cmake
tar xf ~/mysql-5.7.19.tar.gz
cd ~/mysql-5.7.19
cmake . 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.19 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii 
-DENABLED_LOCAL_INFILE=ON 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_FEDERATED_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 
-DWITH_FAST_MUTEXES=1 
-DWITH_EMBEDDED_SERVER=1 
-DWITH_SSL=bundled 
-DWITH_DEBUG=0 
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
make
make install

若果是centos7,则增进黄金年代项-DWITH_SYSTEMD=1,那会提供systemd脚本。

介意,上述编写翻译选项中从未提供sysconfdir、datadir、pidfile和socket等mysql运维时文件类设置选项。固然能够设置,但没要求,何况在做多实例的时候也许会晤世难点。不过,能够思量加上MYSQL_UNIX_ADDR项来设置socket路线,因为不设置的话其会动用暗中认可的/tmp/mysql.sock。

1.3 编写翻译源码安装mysql

提出别天下本无事,尝试编写翻译装MySQL,完全都以劳而无功的事。假设的确要编写翻译安装,把my.cnf、服务管理脚本、编写翻译选项等涉及到运转文件路线的项保证同等,举例pid文件、socket文件、datadir路线、log文件。并确定保障mysql涉及到的目录全部者和所属组都以mysql,比方默许的pid路线/var/run/mysql/。

mysql源码包下载地址:

  • MySQL 5.6源码包下载:
    https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.37.tar.gz

  • MySQL 5.7源码包下载:
    https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz

1.3.2 初始化

shell> ln -s /usr/local/mysql-5.6.37 /usr/local/mysql
shell> cd /usr/local/mysql
shell> useradd -r -s /sbin/nologin mysql
shell> mkdir -p /mydata/data
shell> chown -R mysql.mysql /mydata/data
shell> chmod o-rx /mydata/data
shell> chown -R mysql.mysql /usr/local/mysql
shell> scripts/mysql_install_db --user=mysql --datadir=/mydata/data
shell> cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
shell> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
shell> chown -R root.root /usr/local/mysql
# 修改my.cnf的datadir、socket、log和pid路径。
shell> vim /etc/my.cnf 
[mysqld]
datadir=/mydata/data
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/mydata/data/mysql.log
pid-file=/mydata/data/mysqld.pid

注:mysql 5.7提出选用如下语句进行最早化。

/usr/local/mysql/bin/mysqld --initialize-insecure --datadir=/mydata/data --user=mysql

如果是centos7,则提供systemd风格的劳务管理脚本,并分明是不是要校正pid文件路径。

1.3.1 编写翻译安装过程

关于编写翻译选项,见下文。

动用以下命令安装mysql 5.6。

yum -y install ncurses-devel cmake
tar xf ~/mysql-5.6.37.tar.gz
cd ~/mysql-5.6.37
cmake . 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.37 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii 
-DENABLED_LOCAL_INFILE=ON 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_FEDERATED_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 
-DWITH_FAST_MUTEXES=1 
-DWITH_EMBEDDED_SERVER=1 
-DWITH_SSL=bundled 
-DWITH_DEBUG=0 
make
make install

应用以下命令安装mysql
5.7。比上述多了最终叁个boost相关设置项,不设置此项也许会cmake战败。

yum -y install ncurses-devel cmake
tar xf ~/mysql-5.7.19.tar.gz
cd ~/mysql-5.7.19
cmake . 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.19 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii 
-DENABLED_LOCAL_INFILE=ON 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_FEDERATED_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 
-DWITH_FAST_MUTEXES=1 
-DWITH_EMBEDDED_SERVER=1 
-DWITH_SSL=bundled 
-DWITH_DEBUG=0 
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
make
make install

假定是centos7,则增进风流罗曼蒂克项-DWITH_SYSTEMD=1,那会提供systemd脚本。

瞩目,上述编写翻译选项中向来不提供sysconfdir、datadir、pidfile和socket等mysql运维时文件类设置选项。就算能够设置,但没供给,而且在做多实例的时候恐怕会现出难题。可是,能够思索加上MYSQL_UNIX_ADDR项来设置socket路径,因为不设置的话其会选取暗中同意的/tmp/mysql.sock。

1.3.3 规范化

输出头文件、库文件,设置PATH蒙受变量,设置man路径。

echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
echo "MANPATH /usr/local/mysql/man" >>/etc/man.config
echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
ln -s /usr/local/mysql/include /usr/include/mysql

1.3.2 初始化

shell> ln -s /usr/local/mysql-5.6.37 /usr/local/mysql
shell> cd /usr/local/mysql
shell> useradd -r -s /sbin/nologin mysql
shell> mkdir -p /mydata/data
shell> chown -R mysql.mysql /mydata/data
shell> chmod o-rx /mydata/data
shell> chown -R mysql.mysql /usr/local/mysql
shell> scripts/mysql_install_db --user=mysql --datadir=/mydata/data
shell> cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
shell> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
shell> chown -R root.root /usr/local/mysql
# 修改my.cnf的datadir、socket、log和pid路径。
shell> vim /etc/my.cnf 
[mysqld]
datadir=/mydata/data
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/mydata/data/mysql.log
pid-file=/mydata/data/mysqld.pid

注:mysql 5.7建议接受如下语句实行带头化。

/usr/local/mysql/bin/mysqld --initialize-insecure --datadir=/mydata/data --user=mysql

如果是centos7,则提供systemd风格的服务管理脚本,并认可是或不是要校订pid文件路线。

1.3.4 cmake编写翻译MySQL时的筛选表明

1.3.3 规范化

输出头文件、库文件,设置PATH情形变量,设置man路径。

echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
echo "MANPATH /usr/local/mysql/man" >>/etc/man.config
echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
ln -s /usr/local/mysql/include /usr/include/mysql

Installation Layout Options

  • -DCMAKE_INSTALL_PREFIX=dir_name   # MySQL的设置地方
  • -DINSTALL_PLUGINDIR=dir_name      # 插件安装的目录
  • -DMYSQL_DATADIR=dir_name        # MySQL的data dir
  • -DSYSCONFDIR=dir_name        #
    MySQL私下认可的铺排文件(my.cnf)路线
  • -DTMPDIR=dir_name          #
    一时文件寄存路线,在MySQL5.6.16中才起来提供该选项

1.3.4 cmake编写翻译MySQL时的拈轻怕重表达

Storage Engine Options

累积引擎是插件式的,可被静态编写翻译到MySQL服务中,也得以动态编写翻译成模块,编写翻译成模块时索要选取INSTALL PLUGIN讲话恐怕--plugin-load分选来启用。但一些插件是一贯的,不能够钦赐是静态编写翻译依旧动态编写翻译。

InnoDB,MyISAM,ME奔驰M级GE,MEMO途胜Y和CSV存款和储蓄引擎总是私下认可静态编写翻译到MySQL服务中的,在编写翻译安装的时候不须要显式钦命它们。

编写翻译存款和储蓄引擎的时候,使用-DWITH_enginename_STORAGE_ENGINE=1意味着静态编写翻译到MySQL。可选的内燃机有:ARC黄疸E、BLACKHOLE、EXAMPLE、FEDERATED、PARTITION(分区帮忙引擎)、PE奥迪Q5FSCHEMA(Performance
Schema)。如:

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

使用-WITHOUT_enginename_STORAGE_ENGINE=1代表显式的清除这几个引擎,即强制不采用它们。如:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1

-DWITH_enginename_STORAGE_ENGINE-WITHOUT_enginename_STORAGE_ENGINE都还未点名有些引擎的话,这么些引擎默许动态编写翻译成模块,假设不能动态编译成模块则不编写翻译。

Installation Layout Options

  • -DCMAKE_INSTALL_PREFIX=dir_name   # MySQL的安装地方
  • -DINSTALL_PLUGINDIR=dir_name      # 插件安装的目录
  • -DMYSQL_DATADIR=dir_name        # MySQL的data dir
  • -DSYSCONFDIR=dir_name        #
    MySQL暗许的安排文件(my.cnf)路线
  • -DTMPDIR=dir_name          #
    不经常文件存放路线,在MySQL5.6.16中才发轫提供该选项

Feature Options

  • -DDEFAULT_CHARSET=charset_name

设置暗中同意字符集,默感到latin1。举个例子,binary,ascii,big5
,gb2312,gbk,latin1,latin2,latin5,latin7,utf8。

在cmake/character_sets.cmake文件中的CHA奥德赛SETS_AVAILABLE定义了同意使用的字符集列表。

字符集的设置可以在MySQL服务运维的时候利用”–character_set_server”选项来钦定。

  • -DDEFAULT_COLLATION=collation_name

安装暗中同意的排序准绳。暗中认可排序法则为latin1_swedish_ci。使用SHOW COLLATION言辞能够查看每一个字符集能够采纳的排序法规。

排序法则的设置能够在MySQL服务运行的时候利用--collation_server选料来钦点。

  • -DENABLED_LOCAL_INFILE=bool

Whether to enable LOCAL capability in the client library for LOAD DATA
INFILE.
This option controls client-side LOCAL capability, but the capability
can be set on the server side at server startup with the –local-infile
option.

  • -DMYSQL_TCP_PORT=port_num

钦点MySQL的TCP端口,暗中认可是3306。能够在运行服务时利用–port选项钦点。

  • -DMYSQL_UNIX_ADDR=file_name

点名MySQL的套接字路线,必得是相对路线,暗许是/tmp/mysql.sock。能够在起步服务时使用–port选项钦赐。

  • -DWITH_EXTRA_CHARSETS=name
    Which extra character sets to include:

    • all: All character sets. This is the default.
    • complex: Complex character sets.
    • none: No extra character sets.
  • -DWITH_INNODB_MEMCACHED=bool

Whether to generate memcached shared libraries (libmemcached.so and
innodb_engine.so).

  • -DWITH_SSL={ssl_type|path_name}
    The type of SSL support to include (if any) or the path name to the
    OpenSSL installation to use.

    • ssl_type can be one of the following values:
      • no: No SSL support. This is the default before MySQL 5.6.6.
        As of 5.6.6, this is no longer a permitted value and the
        default is bundled.
      • yes: Use the system SSL library if present, else the library
        bundled with the distribution.
      • bundled: Use the SSL library bundled with the distribution.
        This is the default as of MySQL 5.6.6.
      • system: Use the system SSL library.
    • path_name, permitted for MySQL 5.6.7 and after, is the path
      name to the OpenSSL installation to use. Using this can be
      preferable to using the ssl_type value of system, for it can
      prevent CMake from detecting and using an older or incorrect
      OpenSSL version installed on the system. (Another permitted way
      to do the same thing is to set the CMAKE_PREFIX_PATH option to
      path_name.).
  • -DWITH_ZLIB=zlib_type

    • bundled: Use thezliblibrary bundled with the distribution. This
      is the default.
    • system: Use the system zlib library.

Storage Engine Options

储存引擎是插件式的,可被静态编写翻译到MySQL服务中,也能够动态编写翻译成模块,编写翻译成模块时索要利用INSTALL PLUGIN讲话只怕--plugin-load挑选来启用。但一些插件是一直的,不大概钦定是静态编译依然动态编译。

InnoDB,MyISAM,ME纳瓦拉GE,MEMO凯雷德Y和CSV存款和储蓄引擎总是私下认可静态编写翻译到MySQL服务中的,在编写翻译安装的时候没有必要显式钦命它们。

编译存储引擎的时候,使用-DWITH_enginename_STORAGE_ENGINE=1代表静态编写翻译到MySQL。可选的引擎有:ARC水肿E、BLACKHOLE、EXAMPLE、FEDERATED、PARTITION(分区支持引擎)、PEOdysseyFSCHEMA(Performance
Schema)。如:

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

使用-WITHOUT_enginename_STORAGE_ENGINE=1表示显式的清除这一个引擎,即强制不应用它们。如:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1

-DWITH_enginename_STORAGE_ENGINE-WITHOUT_enginename_STORAGE_ENGINE都还未点名有个别引擎的话,这个引擎暗中同意动态编写翻译成模块,如若无法动态编写翻译成模块则不编写翻译。

2. mysql多实例配置

mysql能够兑现多实例,但因为多实例会共用服务器财富,导致财富争用,在某实例某说话能源占用相当多时(高并发、慢查询),别的的实例会惨被震慑。

甭管rpm安装、通用二进制安装还是编写翻译安装,都有三种艺术达成多实例。

  1. 共用配备文件
    在my.cnf中配备四个”[mysqldN]”,N是一个数字,表示MySQL服务。
    启动与停止的时候利用mysqld_multi {start|stop|restart} N。N能够是单个数字,也足以是逗号分隔的四个数字,还足以是短横线表示的范围数字。倘诺不是rpm包安装的,则mysqld_multi文件的门道在support-files中,将其copy到/etc/init.d下就可以(未有原生态的systemd多实例服务管理脚本)。

    mysqld_multi start 1,2,4-6
    
  2. 独自的计划文件和起步程序(推荐)
    MySQL只需安装二次,即区别实例使用同生机勃勃安装程序。但各种实例使用单独的安插文件、服务管理脚本、datadir目录和socket,并且启动与停止mysqld服务时必要内定套接字文件。

Feature Options

  • -DDEFAULT_CHARSET=charset_name

安装暗中同意字符集,默以为latin1。比方,binary,ascii,big5
,gb2312,gbk,latin1,latin2,latin5,latin7,utf8。

在cmake/character_sets.cmake文件中的CHA途观SETS_AVAILABLE定义了允许行使的字符集列表。

字符集的安装能够在MySQL服务运转的时候使用”–character_set_server”选项来钦定。

  • -DDEFAULT_COLLATION=collation_name

安装暗许的排序法规。暗许排序准则为latin1_swedish_ci。使用SHOW COLLATION言语能够查看每一种字符集能够动用的排序法则。

排序准则的安装能够在MySQL服务运转的时候使用--collation_server筛选来钦点。

  • -DENABLED_LOCAL_INFILE=bool

Whether to enable LOCAL capability in the client library for LOAD DATA
INFILE.
This option controls client-side LOCAL capability, but the capability
can be set on the server side at server startup with the –local-infile
option.

  • -DMYSQL_TCP_PORT=port_num

点名MySQL的TCP端口,默许是3306。能够在开发银行服务时利用–port选项钦点。

  • -DMYSQL_UNIX_ADDR=file_name

钦命MySQL的套接字路线,必须是绝对路线,暗中同意是/tmp/mysql.sock。能够在运转服务时利用–port选项钦赐。

  • -DWITH_EXTRA_CHARSETS=name
    Which extra character sets to include:

    • all: All character sets. This is the default.
    • complex: Complex character sets.
    • none: No extra character sets.
  • -DWITH_INNODB_MEMCACHED=bool

Whether to generate memcached shared libraries (libmemcached.so and
innodb_engine.so).

  • -DWITH_SSL={ssl_type|path_name}
    The type of SSL support to include (if any) or the path name to the
    OpenSSL installation to use.

    • ssl_type can be one of the following values:
      • no: No SSL support. This is the default before MySQL 5.6.6.
        As of 5.6.6, this is no longer a permitted value and the
        default is bundled.
      • yes: Use the system SSL library if present, else the library
        bundled with the distribution.
      • bundled: Use the SSL library bundled with the distribution.
        This is the default as of MySQL 5.6.6.
      • system: Use the system SSL library.
    • path_name, permitted for MySQL 5.6.7 and after, is the path
      name to the OpenSSL installation to use. Using this can be
      preferable to using the ssl_type value of system, for it can
      prevent CMake from detecting and using an older or incorrect
      OpenSSL version installed on the system. (Another permitted way
      to do the same thing is to set the CMAKE_PREFIX_PATH option to
      path_name.).
  • -DWITH_ZLIB=zlib_type

    • bundled: Use thezliblibrary bundled with the distribution. This
      is the default.
    • system: Use the system zlib library.

2.1 mysql多实例配置进度

正文介绍第二种方法,并运用rpm包安装的mysql完结多实例。再次应验,无论采取何种情势安装mysql,都能够完毕多实例,其实看理解上面配置的进度就知晓了。

始建并设置datadir,并初步化、分别提供配置文件。

shell> mkdir -p /mydata/{3306,3307}/data
shell> chown -R mysql.mysql /mydata/{3306,3307}/data
shell> mysql_install_db --datadir=/mydata/3306/data --user=mysql
shell> mysql_install_db --datadir=/mydata/3307/data --user=mysql
shell> cp /etc/my.cnf /mydata/3306/my.cnf
shell> cp /etc/my.cnf /mydata/3307/my.cnf

要是是安装mysql
5.7的多实例,则发轫化时接收如下命令替换上面包车型客车mysql_install_db

shell> mysqld --initialize-insecure --datadir=/mydata/3306/data --user=mysql
shell> mysqld --initialize-insecure --datadir=/mydata/3307/data --user=mysql

各自订正八个布局文件。

#以下是3306实例的配置文件要修改的部分。
shell> vim /mydata/3306/my.cnf
[mysqld]
port=3306
datadir=/mydata/3306/data
socket=/mydata/3306/data/mysql.sock
server_id=1
[mysqld_safe]
log-error=/mydata/3306/data/mysqld.log
pid-file=/mydata/3306/data/mysqld.pid

#以下是3307实例的配置文件要修改部分。
shell> vim /mydata/3307/my.cnf
[mysqld]
port=3307
datadir=/mydata/3307/data
socket=/mydata/3307/data/mysql.sock
server_id=2
[mysqld_safe]
log-error=/mydata/3307/data/mysqld.log
pid-file=/mydata/3307/data/mysqld.pid

2. mysql多实例配置

mysql可以落成多实例,但因为多实例会共用服务器能源,引致财富争用,在某实例某说话财富占用相当多时(高并发、慢查询),别的的实例会惨被震慑。

不论rpm安装、通用二进制安装照旧编写翻译安装,都有两种情势实现多实例。

  1. 共用配备文件
    在my.cnf中布局多个”[mysqldN]”,N是一个数字,表示MySQL服务。
    启动与停止的时候利用mysqld_multi {start|stop|restart} N。N能够是单个数字,也足以是逗号分隔的四个数字,还足以是短横线表示的界定数字。若是不是rpm包安装的,则mysqld_multi文本的门径在support-files中,将其copy到/etc/init.d下就能够(没有原生态的systemd多实例服务管理脚本)。

    mysqld_multi start 1,2,4-6
    
  2. 独立的安插文件和开路程序(推荐)
    MySQL只需安装一次,即区别实例使用同后生可畏安装程序。但种种实例使用单独的布置文件、服务管理脚本、datadir目录和socket,况且启动与停止mysqld服务时索要钦命套接字文件。

2.2 提供sysV服务管理脚本

再各自提供服务管理脚本。

  • 以下是3306实例的拘留脚本/etc/init.d/mysqld3306,内容改变自原有管理脚本/etc/init.d/mysqld。
  • 是因为笔者的演示中mysql是使用rpm安装,所以mysql的basedir为/usr,假若是编写翻译安装或通用二进制安装,则对应修改上边脚本中的basedir变量。
  • 上面包车型地铁datadir变量设置为/mydata/$port/data。请必需和上边的发轫化设置和布置文件中设置的均等。
  • 将此管理脚本复制为/etc/init.d/mysqld3307,再校勘下port=3307就能够作为3307实例的劳动管理脚本。
  • 此脚本不会伊始化mysql(笔者把那部分代码删了)创制实例,所以运维服务前必需先初阶化好相应的mysql实例。
  • 下边包车型客车台本就能够作为多实例服务管理脚本,也足以作为单实例服务处理脚本,只需将脚本名称改一改就可以。

#!/bin/sh
#
# mysqld    This shell script takes care of starting and stopping
#        the MySQL subsystem (mysqld).
#
# chkconfig: 345 64 36
# description:    MySQL database server.
# processname: mysqld

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

basedir=/usr
exec="$basedir/bin/mysqld_safe"
prog="mysqld"
port=3306
datadir="/mydata/$port/data"
socketfile="$datadir/mysql.sock"
errlogfile="$datadir/mysqld.log"
mypidfile="$datadir/mysqld.pid"
cnf="/mydata/$port/my.cnf"

# Set timeouts here so they can be overridden from /etc/sysconfig/mysqld
STARTTIMEOUT=120
STOPTIMEOUT=60

# Set in /etc/sysconfig/mysqld, will be passed to mysqld_safe
MYSQLD_OPTS=

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

case $socketfile in
    /*) adminsocket="$socketfile" ;;
     *) adminsocket="$datadir/$socketfile" ;;
esac

start(){
    [ -x $exec ] || exit 5
    # check to see if it's already running
    RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1)
    if [ $? = 0 ]; then
    # already running, do nothing
    action $"Starting $prog: " /bin/true
    ret=0
    elif echo "$RESPONSE" | grep -q "Access denied for user"
    then
    # already running, do nothing
    action $"Starting $prog: " /bin/true
    ret=0
    else
    # Now start service
    $exec $MYSQLD_OPTS --defaults-file="$cnf" --datadir="$datadir" --socket="$socketfile" 
        --pid-file="$mypidfile" 
        --basedir="$basedir" --user=mysql >/dev/null &
    safe_pid=$!
    # Spin for a maximum of N seconds waiting for the server to come up;
    # exit the loop immediately if mysqld_safe process disappears.
    # Rather than assuming we know a valid username, accept an "access
    # denied" response as meaning the server is functioning.
    ret=0
    TIMEOUT="$STARTTIMEOUT"
    while [ $TIMEOUT -gt 0 ]; do
        RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1) && break
        echo "$RESPONSE" | grep -q "Access denied for user" && break
        if ! /bin/kill -0 $safe_pid 2>/dev/null; then
        echo "MySQL Daemon failed to start."
        ret=1
        break
        fi
        sleep 1
        let TIMEOUT=${TIMEOUT}-1
    done
    if [ $TIMEOUT -eq 0 ]; then
        echo "Timeout error occurred trying to start MySQL Daemon."
        ret=1
    fi
    if [ $ret -eq 0 ]; then
        action $"Starting $prog: " /bin/true
        touch $lockfile
    else
        action $"Starting $prog: " /bin/false
    fi
    fi
    return $ret
}

stop(){
    if [ ! -f "$mypidfile" ]; then
        # not running; per LSB standards this is "ok"
        action $"Stopping $prog: " /bin/true
        return 0
    fi
    MYSQLPID=`cat "$mypidfile"`
    if [ -n "$MYSQLPID" ]; then
        /bin/kill "$MYSQLPID" >/dev/null 2>&1
        ret=$?
        if [ $ret -eq 0 ]; then
        TIMEOUT="$STOPTIMEOUT"
        while [ $TIMEOUT -gt 0 ]; do
            /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
            sleep 1
            let TIMEOUT=${TIMEOUT}-1
        done
        if [ $TIMEOUT -eq 0 ]; then
            echo "Timeout error occurred trying to stop MySQL Daemon."
            ret=1
            action $"Stopping $prog: " /bin/false
        else
            rm -f $lockfile
            rm -f "$socketfile"
            action $"Stopping $prog: " /bin/true
        fi
        else
        action $"Stopping $prog: " /bin/false
        fi
    else
        # failed to read pidfile, probably insufficient permissions
        action $"Stopping $prog: " /bin/false
        ret=4
    fi
    return $ret
}

restart(){
    stop
    start
}

condrestart(){
    [ -e $lockfile ] && restart || :
}


# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status -p "$mypidfile" $prog
    ;;
  restart)
    restart
    ;;
  condrestart|try-restart)
    condrestart
    ;;
  reload)
    exit 3
    ;;
  force-reload)
    restart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
    exit 2
esac

exit $?

行使上边包车型大巴一声令下管理八个实例:

service mysqld3306 {start|stop|status|restart}
service mysqld3307 {start|stop|status|restart}

率先次运营可能会失利,也或者会警告和log相关的项,那是健康的,之后都会健康。

2.1 mysql多实例配置进度

正文介绍第三种办法,并利用rpm包安装的mysql完结多实例。再次证实,无论接收何种措施安装mysql,都得以完毕多实例,其实看理解上边配置的过程就清楚了。

创办并安装datadir,并起首化、分别提供配置文件。

shell> mkdir -p /mydata/{3306,3307}/data
shell> chown -R mysql.mysql /mydata/{3306,3307}/data
shell> mysql_install_db --datadir=/mydata/3306/data --user=mysql
shell> mysql_install_db --datadir=/mydata/3307/data --user=mysql
shell> cp /etc/my.cnf /mydata/3306/my.cnf
shell> cp /etc/my.cnf /mydata/3307/my.cnf

只借使安装mysql
5.7的多实例,则初阶化时选取如下命令替换上面的mysql_install_db

shell> mysqld --initialize-insecure --datadir=/mydata/3306/data --user=mysql
shell> mysqld --initialize-insecure --datadir=/mydata/3307/data --user=mysql

个别改过多个布局文件。

#以下是3306实例的配置文件要修改的部分。
shell> vim /mydata/3306/my.cnf
[mysqld]
port=3306
datadir=/mydata/3306/data
socket=/mydata/3306/data/mysql.sock
server_id=1
[mysqld_safe]
log-error=/mydata/3306/data/mysqld.log
pid-file=/mydata/3306/data/mysqld.pid

#以下是3307实例的配置文件要修改部分。
shell> vim /mydata/3307/my.cnf
[mysqld]
port=3307
datadir=/mydata/3307/data
socket=/mydata/3307/data/mysql.sock
server_id=2
[mysqld_safe]
log-error=/mydata/3307/data/mysqld.log
pid-file=/mydata/3307/data/mysqld.pid

2.3 提供systemd服务管理脚本

  • 以下是3306实例的管理脚本/usr/lib/systemd/system/mysqld3306.service。
  • 由于本人的示范中mysql是行使rpm安装,所以mysql的basedir为/usr,假诺是编译安装或通用二进制安装,则对应改进上面脚本中的basedir变量。
  • 鉴于rpm包安装在centos
    7上,已经未有mysqld_safe命令,由此使用mysqld来启动mysql实例。
  • 将此管理脚本复制为/usr/lib/systemd/system/mysqld3307.service,再将其内的3306修正为3307就可以作为3307实例的服务管理脚本。
  • 此脚本不会起头化mysql(小编把那有些代码删了)创设实例,所以运转服务前必得先开始化好相应的mysql实例。
  • 上边包车型地铁脚本就能够作为多实例服务管理脚本,也能够视作单实例服务管理脚本,只需将脚本名称改一改就能够。
  • mysql为systemd自带了多实例服务管理脚本/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
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

Type=forking

PIDFile=/mydata/3306/data/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Start main service
ExecStart=/usr/sbin/mysqld --defaults-file=/mydata/3306/my.cnf --basedir=/usr --daemonize $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false

下一场重载下systemd服务管理脚本。

systemctl daemon-reload

今后就足以选用上面包车型客车吩咐管理八个实例:

systemctl {start|stop|status|restart} mysqld3306
systemctl {start|stop|status|restart} mysqld3307

2.2 提供sysV服务管理脚本

再分别提供劳务管理脚本。

  • 以下是3306实例的军事拘禁脚本/etc/init.d/mysqld3306,内容更换自原有管理脚本/etc/init.d/mysqld。
  • 由于自个儿的示范中mysql是运用rpm安装,所以mysql的basedir为/usr,假如是编写翻译安装或通用二进制安装,则对应纠正上边脚本中的basedir变量。
  • 上边包车型大巴datadir变量设置为/mydata/$port/data。请必须和地点的起初化设置和计划文件中安装的相像。
  • 将此处理脚本复制为/etc/init.d/mysqld3307,再改过下port=3307就可以作为3307实例的服务管理脚本。
  • 此脚本不会起头化mysql(小编把那有些代码删了)成立实例,所以运转服务前必须先开端化好相应的mysql实例。
  • 下边的脚本就可以作为多实例服务处理脚本,也能够视作单实例服务管理脚本,只需将脚本名称改一改就能够。

#!/bin/sh
#
# mysqld    This shell script takes care of starting and stopping
#        the MySQL subsystem (mysqld).
#
# chkconfig: 345 64 36
# description:    MySQL database server.
# processname: mysqld

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

basedir=/usr
exec="$basedir/bin/mysqld_safe"
prog="mysqld"
port=3306
datadir="/mydata/$port/data"
socketfile="$datadir/mysql.sock"
errlogfile="$datadir/mysqld.log"
mypidfile="$datadir/mysqld.pid"
cnf="/mydata/$port/my.cnf"

# Set timeouts here so they can be overridden from /etc/sysconfig/mysqld
STARTTIMEOUT=120
STOPTIMEOUT=60

# Set in /etc/sysconfig/mysqld, will be passed to mysqld_safe
MYSQLD_OPTS=

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

case $socketfile in
    /*) adminsocket="$socketfile" ;;
     *) adminsocket="$datadir/$socketfile" ;;
esac

start(){
    [ -x $exec ] || exit 5
    # check to see if it's already running
    RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1)
    if [ $? = 0 ]; then
    # already running, do nothing
    action $"Starting $prog: " /bin/true
    ret=0
    elif echo "$RESPONSE" | grep -q "Access denied for user"
    then
    # already running, do nothing
    action $"Starting $prog: " /bin/true
    ret=0
    else
    # Now start service
    $exec $MYSQLD_OPTS --defaults-file="$cnf" --datadir="$datadir" --socket="$socketfile" 
        --pid-file="$mypidfile" 
        --basedir="$basedir" --user=mysql >/dev/null &
    safe_pid=$!
    # Spin for a maximum of N seconds waiting for the server to come up;
    # exit the loop immediately if mysqld_safe process disappears.
    # Rather than assuming we know a valid username, accept an "access
    # denied" response as meaning the server is functioning.
    ret=0
    TIMEOUT="$STARTTIMEOUT"
    while [ $TIMEOUT -gt 0 ]; do
        RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1) && break
        echo "$RESPONSE" | grep -q "Access denied for user" && break
        if ! /bin/kill -0 $safe_pid 2>/dev/null; then
        echo "MySQL Daemon failed to start."
        ret=1
        break
        fi
        sleep 1
        let TIMEOUT=${TIMEOUT}-1
    done
    if [ $TIMEOUT -eq 0 ]; then
        echo "Timeout error occurred trying to start MySQL Daemon."
        ret=1
    fi
    if [ $ret -eq 0 ]; then
        action $"Starting $prog: " /bin/true
        touch $lockfile
    else
        action $"Starting $prog: " /bin/false
    fi
    fi
    return $ret
}

stop(){
    if [ ! -f "$mypidfile" ]; then
        # not running; per LSB standards this is "ok"
        action $"Stopping $prog: " /bin/true
        return 0
    fi
    MYSQLPID=`cat "$mypidfile"`
    if [ -n "$MYSQLPID" ]; then
        /bin/kill "$MYSQLPID" >/dev/null 2>&1
        ret=$?
        if [ $ret -eq 0 ]; then
        TIMEOUT="$STOPTIMEOUT"
        while [ $TIMEOUT -gt 0 ]; do
            /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
            sleep 1
            let TIMEOUT=${TIMEOUT}-1
        done
        if [ $TIMEOUT -eq 0 ]; then
            echo "Timeout error occurred trying to stop MySQL Daemon."
            ret=1
            action $"Stopping $prog: " /bin/false
        else
            rm -f $lockfile
            rm -f "$socketfile"
            action $"Stopping $prog: " /bin/true
        fi
        else
        action $"Stopping $prog: " /bin/false
        fi
    else
        # failed to read pidfile, probably insufficient permissions
        action $"Stopping $prog: " /bin/false
        ret=4
    fi
    return $ret
}

restart(){
    stop
    start
}

condrestart(){
    [ -e $lockfile ] && restart || :
}


# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status -p "$mypidfile" $prog
    ;;
  restart)
    restart
    ;;
  condrestart|try-restart)
    condrestart
    ;;
  reload)
    exit 3
    ;;
  force-reload)
    restart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
    exit 2
esac

exit $?

选取上边包车型大巴通令管理五个实例:

service mysqld3306 {start|stop|status|restart}
service mysqld3307 {start|stop|status|restart}

第2回开发银行恐怕会破产,也说倒霉会警示和log相关的项,这是符合规律的,之后都会健康。

3. mariadb安装

mariadb基本上算是mysql的另贰个兑现,绝大多数以至基本功效能上和MySQL都平等。具体到安装上,也基本完全生机勃勃致。

在centos7上,直接yum install mysql-server将私下认可安装mariadb,借使布置了mysql的yum源,要求钦定”mysql-community-server”才表示安装mysql。

以下仅提供mariadb的各样财富下载地址,具体安装格局见前文对应mysql安装情势。个人提出,将mariadb的劳动启动脚本阅读一遍,和MySQL的做个相比。

mariadb的镜像站点:

[mariadb]
name=mariadb
baseurl=http://yum.mariadb.org/10.2.6/centos/6.6/$basearch/
#baseurl=http://yum.mariadb.org/10.2.6/centos/7.2/$basearch/
enabled=1
gpgcheck=0

mariadb各通用二进制版:

mariadb各个二进制版本:https://downloads.mariadb.org/mariadb/+releases/

mariadb 10.2.6 systemd版(centos7):http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/bintar-linux-systemd-x86_64/mariadb-10.2.6-linux-systemd-x86_64.tar.gz

mariadb 10.2.6 非systemd版(centos6):http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/bintar-linux-x86_64/mariadb-10.2.6-linux-x86_64.tar.gz

mariadb源码包: http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/source/mariadb-10.2.6.tar.gz

2.3 提供systemd服务管理脚本

  • 以下是3306实例的田间管理脚本/usr/lib/systemd/system/mysqld3306.service。
  • 出于笔者的演示中mysql是应用rpm安装,所以mysql的basedir为/usr,假使是编写翻译安装或通用二进制安装,则对应改正上面脚本中的basedir变量。
  • 由于rpm包安装在centos
    7上,已经远非mysqld_safe命令,由此利用mysqld来启动mysql实例。
  • 将此管理脚本复制为/usr/lib/systemd/system/mysqld3307.service,再将其内的3306更正为3307就可以作为3307实例的劳务管理脚本。
  • 此脚本不会起初化mysql(笔者把那生龙活虎部分代码删了)成立实例,所以运维服务前必需先开端化好相应的mysql实例。
  • 上边包车型大巴台本就能够作为多实例服务管理脚本,也得以作为单实例服务管理脚本,只需将脚本名称改一改就能够。
  • mysql为systemd自带了多实例服务处理脚本/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
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

Type=forking

PIDFile=/mydata/3306/data/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Start main service
ExecStart=/usr/sbin/mysqld --defaults-file=/mydata/3306/my.cnf --basedir=/usr --daemonize $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false

接下来重载下systemd服务管理脚本。

systemctl daemon-reload

后来就足以动用上面包车型大巴命令管理三个实例:

systemctl {start|stop|status|restart} mysqld3306
systemctl {start|stop|status|restart} mysqld3307

3. mariadb安装

mariadb基本上算是mysql的另多少个贯彻,绝大好些个以至幼功意义上和MySQL都后生可畏致。具体到安装上,也基本完全相通。

在centos7上,直接yum install mysql-server将私下认可安装mariadb,若是安插了mysql的yum源,要求钦赐”mysql-community-server”才代表安装mysql。

以下仅提供mariadb的各类财富下载地址,具体安装格局见前文对应mysql安装形式。个人提出,将mariadb的劳动运转脚本阅读一次,和MySQL的做个比较。

mariadb的镜像站点:

[mariadb]
name=mariadb
baseurl=http://yum.mariadb.org/10.2.6/centos/6.6/$basearch/
#baseurl=http://yum.mariadb.org/10.2.6/centos/7.2/$basearch/
enabled=1
gpgcheck=0

mariadb各通用二进制版:

mariadb各个二进制版本:https://downloads.mariadb.org/mariadb/+releases/

mariadb 10.2.6 systemd版(centos7):http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/bintar-linux-systemd-x86_64/mariadb-10.2.6-linux-systemd-x86_64.tar.gz

mariadb 10.2.6 非systemd版(centos6):http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/bintar-linux-x86_64/mariadb-10.2.6-linux-x86_64.tar.gz

mariadb源码包: http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-10.2.6/source/mariadb-10.2.6.tar.gz

 

回去Linux类别文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

重返数据库体系随笔大纲:http://www.cnblogs.com/f-ck-need-u/p/7586194.html

转发请评释出处:http://www.cnblogs.com/f-ck-need-u/p/7590376.html

注:若你以为那篇小说还能够请点击右下角推荐,您的支撑能慰勉小编更加大的作文热情,极其谢谢!

Leave a Comment.