实验环境:
Mysql-Master:172.17.253.96 mysql+tracker
Mysql-slave: 172.17.253.101 mysql+tracker
Node1:172.17.253.77 tracker+store
Node2:172.17.253.34 tracker+store
Node3:172.17.253.13 tracker+store
1、 首先实现数据库的主从复制。
mysql-master(172.17.253.96):
[root@centos7 ~]# yum install mairadb-server
vim /etc/my.cnf
[mysqld]
server_id=1
log_bin=master_bin
[root@centos7 ~]# systemctl start mariadb
[root@centos7 ~]# mysql –uroot
MariaDB [(none)]> grant replication slave,replication client on *.* to slave@'%' identified by 'centos';
MariaDB [(none)]> show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master_bin.000002 | 604 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql-slave(172.17.253.101):
vim /etc/my.cnf
[mysqld]
server_id=2
relay_log=mysql_relay_bin
log_bin=master_bin
log_slave_updates=1
[root@centos7 ~]# systemctl start mariadb
[root@centos7 ~]# mysql –uroot
MariaDB [(none)]> change master to master_host='172.17.253.96',master_user='slave',master_password='centos',master_log_file='master_bin.000002',master_log_pos=604;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.17.253.96
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master_bin.000002
Read_Master_Log_Pos: 95693
Relay_Log_File: mysql_relay_bin.000002
Relay_Log_Pos: 95619
Relay_Master_Log_File: master_bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 95693
Relay_Log_Space: 95913
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
ERROR: No query specified
Mysql数据库主从实现~~~
2、配置Perl环境、安装包:
[root@centos7 ~]# yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO –y
实验包:
MogileFS-Server-2.46-2.el7.centos.noarch.rpm
perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm
perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm
MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm
perl-Perlbal-1.78-1.el6.noarch.rpm
MogileFS-Utils-2.19-1.el7.centos.noarch.rpm
各自对照相应主机的环境,安装相应的包。
Mysql-master:
[root@centos7 ~]# mysql –uroot
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mogilefs.* TO mogile@'172.17.%.%' IDENTIFIED BY 'mogile' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
[root@centos7-4 ~]# mogdbsetup --dbhost=127.0.0.1 --dbuser=mogilefs --dbpass=mogile --yes
登录数据库查看是否已经生成数据库:
[root@centos7 ~]# mysql -uroot
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mogilefs |
| mysql |
| performance_schema |
| test |
| wan |
| wan2 |
| wan3 |
+--------------------+
8 rows in set (0.12 sec)
MariaDB [(none)]> use mogilefs;
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 [mogilefs]> show tables;
+----------------------+
| Tables_in_mogilefs |
+----------------------+
| checksum |
| class |
| device |
| domain |
| file |
| file_on |
| file_on_corrupt |
| file_to_delete |
| file_to_delete2 |
| file_to_delete_later |
| file_to_queue |
| file_to_replicate |
| fsck_log |
| host |
| server_settings |
| tempfile |
| unreachable_fids |
+----------------------+
17 rows in set (0.00 sec)
在使用安装包直接安装mogilefs时会有安装脚本来创建mogilefs用户,如果是编译安装,则需要手动创建这个用户。
[root@centos7 ~]# useradd mogilefs
修改tracker配置文件,配置文件为/etc/mogilefs/mogilefsd.conf:
Vim /etc/mogilefs/mogilefsd.conf
# Enable daemon mode to work in background and use syslog
daemonize = 1
# Where to store the pid of the daemon (must be the same in the init script)
pidfile = /var/run/mogilefsd/mogilefsd.pid
# Database connection information
db_dsn = DBI:mysql:mogilefs:host=127.0.0.1
db_user = mogile
db_pass = mogile
# IP:PORT to listen on for mogilefs client requests
listen = 172.17.253.96:7001
# Optional, if you don't define the port above.
conf_port = 7001
# Number of query workers to start by default.
query_jobs = 10
# Number of delete workers to start by default.
delete_jobs = 1
# Number of replicate workers to start by default.
replicate_jobs = 5
# Number of reaper workers to start by default.
# (you don't usually need to increase this)
reaper_jobs = 1
# Number of fsck workers to start by default.
# (these can cause a lot of load when fsck'ing)
#fsck_jobs = 1
# Minimum amount of space to reserve in megabytes
# default: 100
# Consider setting this to be larger than the largest file you
# would normally be uploading.
#min_free_space = 200
# Number of seconds to wait for a storage node to respond.
# default: 2
# Keep this low, so busy storage nodes are quickly ignored.
#node_timeout = 2
# Number of seconds to wait to connect to a storage node.
# default: 2
# Keep this low so overloaded nodes get skipped.
#conn_timeout = 2
# Allow replication to use the secondary node get port,
# if you have apache or similar configured for GET's
#repl_use_get_port = 1
启动tracker服务,服务脚本为:
[root@centos7 ~]# /etc/init.d/mogilefsd start
Starting mogilefsd (via systemctl): [ OK ]
【注】如果服务启动服务报错,查看错误日志,再次检查Perl环境是否配置完整。
Mysql-slave主机上同样启动track服务即可。
3、配置节点上三台主机。Tracker+store
Tracker配置同上面所设置,只是数据库设置时,要指向mysql-master 主机地址,即:
vim /etc/mogilefs/mogilefsd.conf
db_dsn = DBI:mysql:mogilefs:host=172.17.253.96
db_user = mogile
db_pass = mogile
listen = 172.17.253.77:7001
store节点配置文件:
vim /etc/mogilefs/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /data/mogdata #数据存储的路径
创建数据存储路径:
[root@centos7 ~]# mkdir –p /data/mogdata
[root@centos7 ~]# chown –R mogilefs:mogilefs /data/mogdata/
启动服务:
[root@centos7-4 ~]# /etc/init.d/mogilefsd start
[root@centos7-4 ~]# /etc/init.d/mogstored start
[root@centos7-4 ~]# ss –ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:7500 *:*
LISTEN 0 128 *:7501 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 128 172.17.253.77:7001 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
其余两台主机同样配置。
mogstored程序的启动使主机自身成为一个存储的节点,mogstored的启动后,还需要使用mogadm来让当前的这个主机加入到mogilefs的系统中,这就是一个存储节点。注意存储节点中还需要添加设备,每个设备有一个唯一的ID号,同样也要使用mogadm来加入到mogilefs的系统中。
4、tracker主机上配置
增加节点:
[root@centos7 ~]# mmogadm --trackers=172.17.253.96:7001 host add node1 --ip=172.17.253.77 --port=7500 --status=alive
[root@centos7 ~]# mogadm --trackers=172.17.253.96:7001 host add node2 --ip=172.17.253.34 --port=7500 --status=alive
[root@centos7 ~]# mogadm --trackers=172.17.253.96:7001 host add node3 --ip=172.17.253.11 --port=7500 --status=alive
删除节点:
mogadm –trackers=172.17.253.96:7001 host delete node1
修改节点:
mogadm –trackers=172.17.253.96:7001 host modify node2 –ip=xxxx –port=7500 –status=alive
查看增加的节点:
[root@centos7 ~]# mogadm --trackers=172.17.253.96:7001 host list
node1 [1]: alive
IP: 172.17.253.77:7500
node2 [2]: alive
IP: 172.17.253.34:7500
node3 [3]: alive
IP: 172.17.253.13:7500
或者使用:
[root@centos7 ~]# mogadm --trackers=172.17.253.96:7001 check
Checking trackers...
172.17.253.96:7001 ... OK
Checking hosts...
[ 1] node1 ... OK
[ 2] node2 ... OK
[ 3] node3 ... OK
Checking devices...
host device size(G) used(G) free(G) use% ob state I/O%
---- ------------ ---------- ---------- ---------- ------ ---------- -----
[ 1] dev1 46.543 5.138 41.405 11.04% writeable 0.0
[ 2] dev2 49.976 3.755 46.221 7.51% writeable 0.0
[ 3] dev3 49.976 1.678 48.297 3.36% writeable N/A
---- ------------ ---------- ---------- ---------- ------
total: 146.494 10.571 135.923 7.22%
5、添加设备存储节点:
[root@centos7 ~]# modadm –trackers=172.17.253.96:7001 device add node1 1
[root@centos7 ~]# modadm –trackers=172.17.253.96:7001 device add node2 2
[root@centos7 ~]# modadm –trackers=172.17.253.96:7001 device add node3 3 #ID号不能重复
分别在store节点上创建存储路径:
node1:
# mkdir /data/mogdata/dev1 -p
# chown mogilefs:mogilefs dev1/
node2:
# mkdir /data/mogdata/dev2 -p
# chown mogilefs:mogilefs dev2/
node3:
# mkdir /data/mogdata/dev3 -p
# chown mogilefs:mogilefs dev3/
查看添加的节点:
[root@centos7 ~]# mogadm --trackers=172.17.253.96:7001 device list
node1 [1]: alive
used(G) free(G) total(G) weight(%)
dev1: alive 5.138 41.404 46.542 100
node2 [2]: alive
used(G) free(G) total(G) weight(%)
dev2: alive 3.755 46.221 49.976 100
node3 [3]: alive
used(G) free(G) total(G) weight(%)
dev3: alive 1.678 48.298 49.976 100
删除设备存储节点:
[root@centos7 ~]# mogadm –trackers=172.17.253.96:7001 device mark node1 1 dead
6、添加域
[root@centos7 ~]# mogadm –trackers=172.17.253.96:7001 domain add img
[root@centos7 ~]# mogadm –trackers=172.17.253.96:7001 domain add html
7、添加类:
默认会自动创建类:
[root@centos7 ~]# mogadm --trackers=172.17.253.96:7001 domain list
domain class mindevcount replpolicy hashtype
-------------------- -------------------- ------------- ------------ -------
html default 2 MultipleHosts() NONE
NONE
img default 2 MultipleHosts() NONE
创建自定义类:
[root@centos7 ~]# mogadm --trackers=172.17.253.96:7001 class add img ckltext --mindevcount=3
查看类列表:
[root@centos7 ~]# mogadm --trackers=172.17.253.96:7001 domain list
domain class mindevcount replpolicy hashtype
-------------------- -------------------- ------------- ------------ -------
html default 2 MultipleHosts() NONE
img ckltext 3 MultipleHosts() NONE
img default 2 MultipleHosts() NONE
8、上传文件测试:
[root@centos7 ~]# mogupload --trackers=172.17.253.77:7001 --domain=img --key='110' --file=/root/test2.jpg
[root@centos7 ~]# mogfileinfo --trackers=172.17.253.77:7001 --domain=img --key='110'
- file: 110
class: default
devcount: 1
domain: img
fid: 28
key: 110
length: 73309
- http://172.17.253.13:7500/dev3/0/000/000/0000000028.fid
[root@centos7 ~]# mogupload --trackers=172.17.253.96:7001 --domain=img --key='111' --file=/root/test.jpg
[root@centos7 ~]# mogfileinfo --trackers=172.17.253.96:7001 --domain=img --key='111'
- file: 111
class: default
devcount: 1
domain: img
fid: 29
key: 111
length: 17316
- http://172.17.253.34:7500/dev2/0/000/000/0000000029.fid
网页访问:
【注】对于mysql主从复制的实现,还可以结合keepalived。IP漂移来更完美的实现数据库的自动复制。