标签:value gen mfsmount mysql命令 keep 两台 文件目录 _id 方案
案例概述公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制。社交网站的第一个版本部署在LNMP平台之上,前端为 Nginx服务器,通过 fastcgi协议访问后端的PHP服务器。为了保证数据安全,
要求搭建 MYSQL数据库主从集群。
社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享
存储来存放。针对共享存储可用的开源方案有很多,如MFS、 FastDFS等。公
使用MFS分布式文件系统来实现,并将MFS挂载在PHP服务器的相关目录司决定
根据公司的需求,实施过程大致分为以下步骤
部署SVN服务器,为PHP程序员创建repo目录的访问账户,通知程序员可
以导入代码
部署 MYSQL主从服务器,根据PHP程序员的要求创建数据库与表
部署 Nginx服务器
使用keepalived对Nginx服务器做热备
部署PHP服务器
部署MFS,将MFS文件系统挂载在前端PHP服务器的相关目录下
通知上线部署人员可以发布上线。
保证数据库服务、PHP服务、 Nginx服务依次启动,并通知测试人员开始测试,
网站维护人员检查 Nginx、PHP与数据库服务器是否正常工作。
主服务器 (IP 192.168.100.105)
从服务器 (IP 192.168.100.106)
yum install ncurses ncurses-devel bison cmake -y ##安装依赖包
useradd -s /sbin/nologin mysql
tar zxvf mysql-5.7.17.tar.gz -C
tar zxvf boost_1_59_0.tar.gz -C /usr/local/
cd /usr/local/
mv boost_1_59_0 boost
cd mysql-5.7.17/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ## 指定安装目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
-DSYSCONFDIR=/etc ##指定初始化参数文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql
-DDEFAULT_CHARSET=utf8 ##指定默认字符集
-DDEFAULT_COLLATION=utf8_general_ci #默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DMYSQL_DATADIR=/usr/local/mysql/data
-DWITH_BOOST=/usr/local/boost ##指定Boost库的位置,5.7版本必须添加
-DWITH_SYSTEMD=1
!!注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
make && make install ##安装过程时间较长
chown -R mysql.mysql /usr/local/mysql/ ##权限设置
vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql ##用户
basedir = /usr/local/mysql ##基础目录
datadir = /usr/local/mysql/data ##数据目录
port = 3306 ##端口
character_set_server=utf8 ##服务语言设置
pid-file = /usr/local/mysql/mysqld.pid ##pid文件位置
socket = /usr/local/mysql/mysql.sock ##socket文件位置
server-id = 1 ##服务ID
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
chown mysql:mysql /etc/my.cnf
echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH‘ >> /etc/profile
echo ‘export PATH‘ >> /etc/profile
source /etc/profile
## 方便使用mysql命令,设置环境变量
/usr/local/mysql/bin/mysqld
--initialize-insecure
--user=mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
## 初始化数据库
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld
netstat -anpt | grep 3306
## 3306端口开启 服务开启成功
systemctl enable mysqld
mysqladmin -u root -p password "abc123" 给root账户设置密码为abc123
在主 和 从mysql服务器上
vim /etc/my.cnf
[mysqld]
binlog-ignore-db=mysql,information_schema
character_set_server=utf8
log_bin=mysql_bin
server_id=1 ## 主从服务器的 server_id 不相同
log_slave_updates=true
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
systemctl restart mysqld
在 主MYSQL上 为 从服务器授予权限
mysql -u root -p
grant replication slave on *.* to ‘replication‘@‘192.168.100.%‘ identified by ‘123456‘;
show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 | 335 | | |
+-------------------+----------+--------------+------------------+
在从服务器上
mysql -u root -p
change master to master_host=‘192.168.100.105‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000002‘,master_log_pos=335;
start slave;
show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
## 出现这两条YES 则说明 MYSQL主从复制完成
MFS Master (IP 192.168.100.107)
MFS MetaLogger (IP 192.168.100.108)
MFS Chunk1 (IP 192.168.100.109)
MFS Chunk2 (IP 192.168.100.110)
yum install zlib-devel gcc gcc-c++ male -y
useradd -s /sbin/nologin mfs
tar xzvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27-5
./configure
--prefix=/usr/local/mfs ##安装目录
--with-default-user=mfs ##默认用户
--with-default-group=mfs ##默认用户基本组
--disable-mfschunkserver ##不启动节点服务器
--disable-mfsmount ##不启动mount服务器
make && make install
cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg ##挂载权限
cp mfstopology.cfg.dist mfstopology.cfg ##架构感知
cd/usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs ##防断电
/usr/local/mfs/sbin/mfsmaster start ##启动服务
/usr/local/mfs/sbin/mfsmaster -s ##停止服务用这条命令
yum install zlib-devel gcc gcc-c++ male -y
useradd -s /sbin/nologin mfs
tar xzvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27-5
./configure
--prefix=/usr/local/mfs ##安装目录
--with-default-user=mfs ##默认用户
--with-default-group=mfs ##默认用户基本组
--disable-mfschunkserver ##不启动节点服务器
--disable-mfsmount ##不启动mount服务器
make && make install
cd /usr/local/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
vi mfsmetalogger.cfg
MASTER_HOST = 192.168.100.107
/usr/local/mfs/sbin/mfsmetalogger start ##启动服务
/usr/local/mfs/sbin/mfsmetalogger -s ##停止服务用这条命令
两台Chunk服务器的配置相同
yum install zlib-devel gcc gcc-c++ male -y
useradd -s /sbin/nologin mfs
tar xzvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27-5
./configure
--prefix=/usr/local/mfs ##安装目录
--with-default-user=mfs ##默认用户
--with-default-group=mfs ##默认用户基本组
--disable-mfsmaster ##不启动主服务器
--disable-mfsmount ##不启动mount服务器
make && make install
cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
vim mfschunkserver.cfg
MASTER_HOST = 192.168.100.107
vim mfshdd.cfg
添加一行
/data
mkdir /data
chown -R mfs:mfs /data
/usr/local/mfs/sbin/mfschunkserver start ##启动服务
/usr/local/mfs/sbin/mfschunkserver -s ##停止服务用这条命令
由于要将MFS 文件系统挂载到 前端PHP 服务器上 ,作为用户上传图片的存储, MFS客户端需要在PHP服务器上安装
安装FUSE,MFS客户端依赖于FUSE
tar xzvf fuse-2.9.2.tar.gz
cd fuse-2.9.2
./configure
make && make install
vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
## 设置环境变量
source /etc/profile
安装mfs客户端
yum install zlib-devel gcc gcc-c++ male -y
useradd -s /sbin/nologin mfs
tar xzvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27-5
./configure
--prefix=/usr/local/mfs ##安装目录
--with-default-user=mfs ##默认用户
--with-default-group=mfs ##默认用户基本组
--disable-mfschunkserver ##不启动节点服务器
--enable-mfsmount ##启动mount服务器
make && make install
modprobe fuse ##加载fuse模块到内核
/usr/local/mfs/bin/mfsmount /var/www/html/webphp/uploads/photos -H 192.168.100.107 ##将MFS 文件系统 挂载到 PHP服务器上
df -hT
## 查看挂载情况
标签:value gen mfsmount mysql命令 keep 两台 文件目录 _id 方案
原文地址:http://blog.51cto.com/13625924/2151670