CentOS7环境下部署Mariadb-Galera集群

  1. 云栖社区>
  2. 博客>
  3. 正文

CentOS7环境下部署Mariadb-Galera集群

技术小胖子 2017-11-17 17:55:00 浏览1042
展开阅读全文

搭建基于Galera的MySql集群

CentOS7环境下部署Mariadb-Galera集群

##mariadb-galera官网包:https://mariadb.com/kb/en/mariadb/yum/

##mariadb-server官网包:http://yum.mariadb.org/10.1/centos7-amd64/rpms/

##mysql-galera官网包:http://releases.galeracluster.com/centos/6/x86_64  #这里的centos/6/x86_64需要根据你的系统自行修改

##galera源码包:https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/

##博客:http://blog.sina.com.cn/s/blog_8ea8e9d50102ws4x.html

说明:mariadb-10.1.x版本,galera wsrep(Write Set replication)API库已经内嵌到版本中,

而10.0.x的版本是分开的两个包mariadb-galera(mariadb的galera版本),galera(提供wsrep API的库libgalera_smm.so)。


galera官方安装说明(标准文档,首选的参考方案):https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/


主题开始:

现在线上项目的MYSQL数据库集群很多采用Galera Cluster的技术来搭建,以前很多互联网公司采用MySql官方提供的主从集群,而Galera的集群解决方案则没有主从限制,每个单独的点都可以使用,还是比较独特的,就自己搭了三台虚拟机实现了下。


Galera Cluster for MySQL是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高,能很好保证业务不断增长时我们数据的安全和随时的扩展。


galera群集的主要特点:

多主机数据同步复制

多主服务器的拓扑结构

每个node节点都是主服务器,每个node都有全部数据.

每个节点都可以提供写和读

数据复制只支持InnoDB引擎.

所有node节点同步数据通过wsrep接口

每个节点下线后,自动从集群中下线

自动剔除故障节点

自动加入新节点

真正行级别的并发复制

客户端连接跟操作单台MySQL数据库的体验一致


Galera本质是一个wsrep提供者(provider),运行依赖于wsrep的API接口。Wsrep API定义了一系列应用回调和复制调用库,来实现事务数据库同步写集(writeset)复制以及相似应用。目的在于从应用细节上实现抽象的,隔离的复制。虽然这个接口的主要目标是基于认证的多主复制,但同样适用于异步和同步的主从复制。


项目的系统环境:

CentOS6  64位


MariaDB版本:

版本一:MariaDB-Galera-server10.0.14

安装方法: yum install MariaDB-Galera-server MariaDB-client galera  mlocate  createrepo -y


版本二:MariaDB-Galera-server10.1或10.3

yum  install  MariaDB-server MariaDB-client galera  mlocate  createrepo  -y  


galera集群配置思路:

1、在每台主机上停止运行mysqld或mariadb服务。并设置服务为开机不启动。

2、在每台主机上安装galera软件,并启动mysql服务(此处是galera的服务)。

3、在每台主机上创建用于galera同步数据的用户账号,停止mysql服务(此处是galera的服务)。

4、设置每台galera主机的配置文件/etc/my.cnf.d/server.cnf,保证设置正确。

5、初始化启动第1台galera主机的集群环境:

service  mysql  stop

service mysql start --wsrep-new-cluster

mysql -uroot -p -e  "show status like 'wsrep_%';"

6、启动其他galera主机,验证集群状态:mysql -uroot -p -e  "show status like 'wsrep_%';"


项目的准备工作


最少三台机器,当然两台也可以,但是两台的话需要额外配置(见官方说明),一般应该也不会少于三台吧。

系统 ip角色

CentOS  6.5192.168.100.71Node1

CentOS  6.5192.168.100.72Node2

CentOS  6.5192.168.100.72Node3

配置防火墙规则,参考官方的说明,我这里偷懒就直接关闭了防火墙。

service  firewalld  stop

chkconfig  firewalld  off

setenforce  0

getenforce

sed  -i  '/^SELINUX=/s/enforcing/permissive/'   /etc/selinux/config


修改每台机器/etc/sysconfig/selinux配置,将SELINUX=enforcing改为SELINUX=disabled,这一步很重要,不然后面一切都白费。


修改系每台主机的hosts文件,实现本地域名解析(选做,不做也不影响):

vi  /etc/hosts   添加如下内容

192.168.100.71node1

192.168.100.72node2

192.168.100.72node3


后期用root登录galera集群查状态:

mysql -uroot  -p

show status like 'wsrep%';(首选)

SHOW STATUS LIKE 'wsrep_cluster_size';        

show  global status like 'ws%'; 

SHOW VARIABLES LIKE 'wsrep_cluster_address';   查集群中的主机地址

show status like 'wsrep_ready';                查wsrep状态


下载安装

###galera-10.0.31官方rpm包下载(以下实验首选):

centos6版的galera-10.0.31软件(首选):http://yum.mariadb.org/10.0.31/centos6-amd64/rpms/

centos7版的galera-10.0.31软件(首选):http://yum.mariadb.org/10.0.31/centos7-amd64/rpms/


###galera-10.3官方rpm包下载(已测试OK):

centos6版的galera-10.3软件http://yum.mariadb.org/10.3/centos6-amd64/rpms/


使用yum安装galera-10.0.31版:

添加galera的资源仓库,在/etc/yum.repos.d/目录下新增galera.repo文件,并编辑文件添加如下内容:

金的本地galera源(很快,首选),网络yum源很慢,建议先到官网下载rpm软件包,再用配置本地yum源安装。

vi   /etc/yum.repos.d/galera.repo   配置文件如下:

[galera]

name=galera

baseurl=file:///root/7galera

#baseurl=http://yum.mariadb.org/10.0.31/centos6-amd64/

enabled=1

gpgcheck=0


金安装方法:

2. 开始安装(金已测OK)

 yum install MariaDB-Galera-server MariaDB-client galera   mlocate  createrepo  -y

 rpm  -q MariaDB-Galera-server MariaDB-client galera

安装完后,查看ls  /etc/my.cnf.d/下的文件是否为如下:

    mariadb-client.conf

    server.conf

    tokudb.conf


查galera的动态链接库文件路径:

  updatedb

  locate  libgalera_smm.so


补充说明:

使用yum安装galera-10.3版(测试OK):yum install MariaDB-server MariaDB-client galera   mlocate  createrepo  -y    (配置方法同下)

3. 在三台主机上初始化mariadb,并且创建集群账户。(金测OK)

启动mysql服务:

service mysql start


(不用做)新版本的mysql必须使用初始密码登录了,无法本地匿名或admin方式初始化密码了,初始化密码一般存放在errlog里可以通过


ps -ef | grep mysql

来查询errlog位置,然后再通过


cat /var/log/mysqld.log | grep "temporary password"

来查看你的初始密码,第一次登录后会强制你修改密码的。


##(选做)ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz!QAZ';  #新版本对密码强度有要求了,不然会报错

(必做)#创建新用户

说明:以下是在本地用root登录到mariadb服务器,创建一个新管理员账号,用于galera数据同步身份认证。

mysql -uroot

grant all PRIVILEGES on *.* to myroot@'%' identified by 'reppass';  

FLUSH PRIVILEGES;

select  user,host,password  from  mysql.user;

exit


配置

编辑vi /etc/my.cnf.d/server.cnf 在[galera]内部增加如下内容(可以直接复制以下代码):

wsrep_on=ON

binlog_format=ROW

bind-address=0.0.0.0

default_storage_engine=innodb

innodb_autoinc_lock_mode=2

innodb_flush_log_at_trx_commit=0

wsrep_cluster_name=MyCLuster

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://"

##wsrep_cluster_address="gcomm://192.168.100.71,192.168.100.72,192.168.100.73"

wsrep_node_name=node1

wsrep_node_address=192.168.100.71

wsrep_sst_method=rsync

wsrep_sst_auth=myroot:reppass



查看cat /etc/my.cnf.d/server.cnf  配置文件功能解释:

wsrep_on=ON       //启用wsrep功能,必选

binlog_format=ROW      //二进制日志文件格式为ROW,还可以是mix

bind-address=0.0.0.0    //监听端口

default_storage_engine=innodb   //默认存储引擎为innodb

innodb_autoinc_lock_mode=2      //innodb锁的模式

innodb_flush_log_at_trx_commit=0     //每隔0秒同步刷新数据

wsrep_cluster_name=MyCLuster         //wsrep集群名称

wsrep_provider=/usr/lib64/galera/libgalera_smm.so     //wsrep集群服务的库文件   

wsrep_cluster_address="gcomm://"       //用于第一台galera集群主机

##wsrep_cluster_address="gcomm://192.168.100.71,192.168.100.72,192.168.100.73"    //用于其他galera集群主机

wsrep_node_name=node1        //当前集群主机名

wsrep_node_address=192.168.100.71     //当前集群主机ip地址

wsrep_sst_method=rsync       //wsrep_sst方法为同步

wsrep_sst_auth=myroot:reppass         //同步的账号myroot,密码reppass,需要用grant创建此账号。

说明:如果不想使用用户名和密码验证,然后再进行数据同步复制,那么可以注释掉wsrep_sst_aut这行代码,但是这样不安全。


启动第一台机器(192.168.100.71):

service  mysql  stop

service  mysql  restart    (首选此方法,启动第1台galera集群服务,其他galera主机也用此方法)

service mysql start --wsrep-new-cluster    (备选方法,很多贴子说在第一台galera集群主机必须用此方法运行,其实并不是)

其中--wsrep-new-cluster只要在初始化集群的时候才能用,后面服务重启都不要用,这时候可以查看集群状态了:


mysql -uroot -p -e  "show status like 'wsrep_%';"

如果一切正常的话可以看到下面信息,说明当前节点已经启动成功。(金测OK)

| wsrep_incoming_addresses     | 192.168.100.71:3306 |

| wsrep_cluster_size           | 3                   |


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

启动其他节点:

第2台galera主机(192.168.100.72):

第1步:配置mariadb-galera的yum源,安装软件。

 yum install MariaDB-Galera-server MariaDB-client galera   mlocate  createrepo  -y

 rpm  -q MariaDB-Galera-server MariaDB-client galera

安装完后,查看ls  /etc/my.cnf.d/下的文件是否为如下:

    mariadb-client.conf

    server.conf

    tokudb.conf

  

查galera的动态链接库文件路径:

  updatedb

  locate  libgalera_smm.so


第2步:启动mysql服务,创建用于galera同步的用户账号。

service   mysql  start

mysql  -uroot

grant all PRIVILEGES on *.* to myroot@'%' identified by 'reppass';  

FLUSH PRIVILEGES;

select  user,host,password  from  mysql.user;

exit


第3步:修改/etc/my.cnf.d/server.cnf    在[galera]内部增加如下内容:

wsrep_on=ON

binlog_format=ROW

bind-address=0.0.0.0

default_storage_engine=innodb

innodb_autoinc_lock_mode=2

innodb_flush_log_at_trx_commit=0

wsrep_cluster_name=MyCLuster

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

##wsrep_cluster_address="gcomm://"       //用于第一台galera集群主机

wsrep_cluster_address="gcomm://192.168.100.71,192.168.100.72,192.168.100.73"    //用于其他galera集群主机

wsrep_node_name=node2        //当前集群主机名

wsrep_node_address=192.168.100.72     //当前集群主机ip地址

wsrep_sst_method=rsync

wsrep_sst_auth=myroot:reppass         //同步的账号myroot,密码reppass


第3步:启动第2台galera主机的服务

service mysql start


再次查看集群信息:mysql -uroot -p -e  "show status like 'wsrep_%';"

| wsrep_incoming_addresses     | 192.168.100.71:3306,192.168.100.72:3306 |

| wsrep_cluster_size           | 2                                       |


至此,整个集群中的2台galera主机就搭建好了,测试一下,在任意一个节点创建一个库:

mysql -uroot -p -e "create database pfma_test"


在本机和其他节点查看:

mysql> show databases;


附加任务:在galera集群中再添加192.168.100.73这台主机,直接参照第2台galera主机(192.168.100.72)的安装和配置方法。


再次查看集群信息:mysql -uroot -p -e  "show status like 'wsrep_%';"

| wsrep_incoming_addresses     | 192.168.100.71:3306,192.168.100.72:3306,192.168.100.73:3306 |

| wsrep_cluster_size           | 3                                                           |

至此,整个集群就搭建好了,测试一下,在任意一个节点创建一个库:




========

galera集群部署的方法二:

网上的galera的yum源(很慢,不采用)

[galera]

name = Galera

baseurl = http://releases.galeracluster.com/centos/6/x86_64#这里的centos/6/x86_64需要根据你的系统自行修改

gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com

gpgcheck = 1

之后


yum update

yum install galera-3 mysql-wsrep-5.7

手动下载安装

因为墙的原因,我们经常会发现无法直接用yum安装,可以挂代理后手动安装,根据你的系统打开对应网址,譬如我的64位centos6.5就打开http://releases.galeracluster.com/centos/6/x86_64/,下载如下几个文件:


mysql-wsrep-libs-compat-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

mysql-wsrep-common-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

mysql-wsrep-libs-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

mysql-wsrep-shared-5.6-5.6.35-25.18.20170106.1f9ae89.el6.x86_64.rpm

galera-3-25.3.20-2.el6.x86_64.rpm

mysql-wsrep-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

mysql-wsrep-client-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

mysql-wsrep-server-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

安装前需要检查是否已经有mysql存在,以免后续产生冲突:


rpm -qa|grep -i mysql

rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64 #卸载后面会冲突的包

如果存在则全部卸载后就可以安装了,其中galera-3依赖boost-program-options,需要提前安装好:


yum install boost-program-options

rpm -ivh mysql-wsrep-common-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

rpm -ivh mysql-wsrep-libs-compat-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

rpm -ivh mysql-wsrep-libs-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

rpm -ivh mysql-wsrep-shared-5.6-5.6.35-25.18.20170106.1f9ae89.el6.x86_64.rpm

rpm -ivh galera-3-25.3.20-2.el6.x86_64.rpm

rpm -ivh mysql-wsrep-client-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

rpm -ivh mysql-wsrep-server-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

rpm -ivh mysql-wsrep-5.7-5.7.17-25.10.20170117.92194e2.el6.x86_64.rpm

启动mysql


service mysqld start

新版本的mysql必须使用初始密码登录了,无法本地匿名或admin方式初始化密码了,初始化密码一般存放在errlog里可以通过


ps -ef | grep mysql

来查询errlog位置,然后再通过


cat /var/log/mysqld.log | grep "temporary password"

来查看你的初始密码,第一次登录后会强制你修改密码的。


ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz!QAZ';#新版本对密码强度有要求了,不然会报错

grant all PRIVILEGES on *.* to myroot@'%' identified by 'reppass';#创建新用户

FLUSH PRIVILEGES;

配置


编辑/etc/my.cnf在[mysqld]内部增加如下内容:

binlog_format=ROW

bind-address=0.0.0.0

default_storage_engine=innodb

innodb_autoinc_lock_mode=2

innodb_flush_log_at_trx_commit=0

wsrep_cluster_name=MyCLuster#你的cluster名,每台机器上的要相同

wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so#不同版本这个路径可能不同,需要自行确定

wsrep_cluster_address="gcomm://"#第一台机器需要这样配置

#wsrep_cluster_address="gcomm://192.168.80.136,192.168.80.137,192.168.80.138"#其他机器需要配置同步源路径

wsrep_node_name=node1#当前机器的节点名

wsrep_node_address=192.168.80.136#当前机器ip

wsrep_sst_method=rsync#同步方式

wsrep_sst_auth=myroot:reppass

启动第一台机器:


service mysqld start --wsrep-new-cluster

其中--wsrep-new-cluster只要在初始化集群的时候才能用,后面服务重启都不要用,这时候可以查看集群状态了:


mysql -uroot -p -e  "show status like 'wsrep_%'"

如果一切正常的话可以看到下面信息,说明当前节点已经启动成功。


| wsrep_incoming_addresses     | 192.168.80.136:3306 |

| wsrep_cluster_size           | 3                   |

启动其他节点


service mysqld start

再次查看集群信息:


mysql -uroot -p -e  "show status like 'wsrep_%'"

| wsrep_incoming_addresses     | 192.168.80.139:3306,192.168.80.138:3306,192.168.80.137:3306 |

| wsrep_cluster_size           | 3                                                           |

至此,整个集群就搭建好了,测试一下,在任意一个节点创建一个库:


mysql -uroot -p -e "create database pfma_test"

在其他节点查看:


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| pfma_test          |

| sys                |

+--------------------+

5 rows in set (0.07 sec)

可以发现确实有正常地同步了其他节点的操作。



======================================

MySQL高可用架构之Galera Cluster

[日期:2017-04-06] 来源:Linux社区

MySQL高可用架构之Galera Cluster

1、实验准备及拓扑

至少需要三个节点

node1 192.168.150.137

node2 192.168.150.138

node3 192.168.150.139

mariadb版本为mariadb的支持galera cluster的分支版本

MariaDB-Galera-server-5.5.46

实验前准备:

1、HA环境首要条件:时间同步

三个节点添加对时脚本

[root@localhost ~]# crontab -l

*/5 * * * * /usr/sbin/ntpdate 1.cn.pool.ntp.org


2、三个几点均配置MariaDB-Galera的本地yum仓库,我尝试使用mariadb官方提供的yum仓库,天朝的网会气死你

[root@localhost ~]# cat /etc/yum.repos.d/galera.repo 

[galera]

name=galera

baseurl=file:///root/galera_cluster

gpgcheck=0

enable=1


3、yum安装,仅需安装MariaDB-Galera-server,其余的均会依赖安装

yum -y install Mariadb-Galera-server

2、配置

1、查看galera所需调用的库的位置

rpm -ql galera | grep -i smm.so

/usr/lib64/galera/libgalera_smm.so


2、修改配置文件,三节点同步修改

[root@localhost yum.repos.d]# cat /etc/my.cnf.d/server.cnf

#

# These groups are read by MariaDB server.

# Use it for options that only the server (but not clients) should see

#

# See the examples of server my.cnf files in /usr/share/mysql/

#


# this is read by the standalone daemon and embedded servers

[server]


# this is only for the mysqld standalone daemon

[mysqld]


#

# * Galera-related settings

#

[galera]

# Mandatory settings

wsrep_provider=/usr/lib64/galera/libgalera_smm.so 

wsrep_cluster_address="gcomm://192.168.150.137,192.168.150.138,192.168.150.139"

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0

wsrep_cluster_name='mycluster'

#

# Optional setting

#wsrep_slave_threads=1

#innodb_flush_log_at_trx_commit=0


# this is only for embedded server

[embedded]


# This group is only read by MariaDB-5.5 servers.

# If you use the same .cnf file for MariaDB of different versions,

# use this group for options that older servers don't understand

[mysqld-5.5]


# These two groups are only read by MariaDB servers, not by MySQL.

# If you use the same .cnf file for MySQL and MariaDB,

# you can put MariaDB-only options here

[mariadb]


[mariadb-5.5]


3、节点1进行mysql及cluster开启

[root@localhost ~]# /etc/rc.d/init.d/mysql start --wsrep-new-cluster    

Starting MySQL.... SUCCESS! 


4、其它两个节点进行正常的mysql开启

[root@localhost ~]# service mysql start

Starting MySQL....SST in progress, setting sleep higher. SUCCESS! 


此时已配置完成。。。。。。

3、功能验证

1、节点1创建数据库,节点2 3均可正常查看

节点1:[root@localhost ~]# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 4

Server version: 5.5.46-MariaDB-wsrep MariaDB Server, wsrep_25.12.r4f81026


Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> CREATE DATABASE mydb;

Query OK, 1 row affected (0.00 sec)


MariaDB [(none)]> SHOW DATABASES;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mydb               |

| mysql              |

| performance_schema |

| test               |

+--------------------+


节点2 3:

[root@localhost ~]# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 4

Server version: 5.5.46-MariaDB-wsrep MariaDB Server, wsrep_25.12.r4f81026


Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> SHOW DATABASES;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mydb               |

| mysql              |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.01 sec)




2、节点2数据库中创建表,节点1 2均可正常查看

节点2:

MariaDB [(none)]> use mydb;

Database changed

MariaDB [mydb]> CREATE TABLE tb1 (id int,name char(10));

Query OK, 0 rows affected (0.01 sec)


节点1 3:

MariaDB [(none)]> use mydb

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

MariaDB [mydb]> SHOW TABLES

    -> ;

+----------------+

| Tables_in_mydb |

+----------------+

| tb1            |

+----------------+

1 row in set (0.00 sec)


MariaDB [mydb]> DESC tb1;

+-------+----------+------+-----+---------+-------+

| Field | Type     | Null | Key | Default | Extra |

+-------+----------+------+-----+---------+-------+

| id    | int(11)  | YES  |     | NULL    |       |

| name  | char(10) | YES  |     | NULL    |       |

+-------+----------+------+-----+---------+-------+

2 rows in set (0.02 sec)


3、自增栏位的测试,每个几点会跳着进行自增,同时插入时例如1节点1 4 7;2节点2 5 8;三节点3 6 9。

节点1:

MariaDB [mydb]> CREATE TABLE tb2(id int UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,name char(30)

uery OK, 0 rows affected (0.01 sec)


MariaDB [mydb]> INSERT INTO tb2 (name) VALUES ('void'),('yao');

Query OK, 2 rows affected (0.01 sec)

Records: 2  Duplicates: 0  Warnings: 0


节点2:

MariaDB [mydb]> select * from tb2;

+----+------+

| id | name |

+----+------+

|  1 | void |

|  4 | yao  |

+----+------+

2 rows in set (0.01 sec)


MariaDB [mydb]> INSERT INTO tb2 (name) VALUES ('amy'),('apple');

Query OK, 2 rows affected (0.00 sec)

Records: 2  Duplicates: 0  Warnings: 0


MariaDB [mydb]> select * from tb2;

+----+-------+

| id | name  |

+----+-------+

|  1 | void  |

|  4 | yao   |

|  5 | amy   |

|  8 | apple |

+----+-------+

4 rows in set (0.00 sec)

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/142563.htm





      本文转自rshare 51CTO博客,原文链接:http://blog.51cto.com/1364952/1953479,如需转载请自行联系原作者






网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注