Linux服务篇之八:源码构建MySQL主从架构
一、编译安装mysql-5.5.44
系统版本:CentOS6.5
MySQL版本:mysql-5.5.44
步骤:
1、安装所需要系统库相关库文件
yum install -y gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool*
2、安装cmake
MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。
因此,我们首先要在系统中源码编译安装cmake工具。
tar zxvf cmake-2.8.7.tar.gz
cd cmake-2.8.7
./bootstrap
gmake
gmake install
3、创建mysql安装目录
mkdir -p /usr/local/mysql/
4、 创建数据存放目录
mkdir -p /data/mysqldata/
5、 创建用户和用户组与赋予数据存放目录权限
groupadd mysql
useradd -g mysql mysql
chown mysql.mysql -R /data/mysqldata/
chmod +w /usr/local/mysql/
chown -R mysql.mysql /usr/local
mkdir -p /var/mysql/log/
6、编译安装mysql 5.5.44
tar -zxvf mysql-5.5.44.tar.gz
cd mysql-5.5.44
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysqldata -DMYSQL_USER=mysql;echo $?
make && make install ;echo $?
7、配置数据库
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
cd support-files/
cp my-medium.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysql
8、初始化安装数据库
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysqldata --user=mysql
10、vi /etc/init.d/mysqld 添加以下内容
basedir=/usr/local/mysql
datadir=/data/mysqldata
11、启动数据库
chkconfig --add mysqld
chkconfig --level 345 mysqld on
cd /usr/local/mysql
/etc/init.d/msyqld start
12、进入数据库
/usr/local/mysql/bin/mysql -uroot mysql
二、安装LAP服务
1、这一条命令LAP环境即可安装成功,只需要重启apache服务即可:
yum install httpd httpd-devel php php-devel php-mysql -y
检查一下,服务端apache口已经启动好了!
ps -ef |grep http
netstat -ntl
2、创建一个测试页面
1、在apache的发布目录里面创建:/var/www/html
vi index.php
输入一下内容:
<?php
phpinfo();
?>
访问一下这个php的测试网站,出现这个页面,表示php的测试网站已经搭建成功!
3、apahche和php整合
查找一下Apache配置文件中:/etc/httpd/modules,是否有php模块:如果找到了,就证明apahche和php整合成功了!apache会自动加载php模块!
4、php.conf模块插入到httpd.conf的配置文件
cat /etc/httpd/conf.d/php.conf >>/etc/httpd/conf/httpd.conf
插入之前的/etc/httpd/conf/httpd.conf配置文件内容没有php.conf!
5、重启apache服务,出现一个警告:php这个模块已经在2个目录中被加载了!需要清理一个,移动到临时目录中:mv /etc/httpd/conf.d/php.conf /tmp/
6、再次启动apache服务,测试页面照样可以打开!
三、配置Discuz论坛数据库
1、在数据库中新建数据库Discuz,用于存放Discuz论坛数据,并授权用户,
四、MySQL主从复制
试验环境:
主数据库服务器:192.168.174.17,MySQL已经安装。
从数据库服务器:192.168.174.18,MySQL已经安装。
1、在两台MYSQL服务器上分别创建存放数据的目录,并且授予权限:
mkdir �Cp /data/mysqldata
chown �CR mysql.mysql /data/mysqldata
2、在Master修改vi /etc/my.cnf内容为如下:
[mysqld]
datadir=/mydata/data
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links isrecommended to prevent assorted security risks
symbolic-links=0
log-bin=mysql-bin
server-id=1
auto_increment_offset=1
auto_increment_increment=2
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
replicate-do-db=all
3、配置msql从,编辑/etc/my.cnf,
[mysqld]
datadir=/mydata/data
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links isrecommended to prevent assorted security risks
symbolic-links=0
server-id=2
auto_increment_offset=2
auto_increment_increment=2
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
4、启动mysql,并进入数据库,默认已经初始化过数据库,
5、在 master主上设置权限:
grant replication slave on *.* to tongbu@'192.168.174.18' identified by "123";
再执行:show master status;
6、在从服务器上设置指定master ip 和pos点
change master to master_host='192.168.174.17',master_user='tongbu',master_password='123',master_log_file='mysql-bin.000004',master_log_pos=803;
7、在slave启动
slave start;
并执行show slave status\G查看Mysql主从状态:
Slave_IO_Running: Yes
Slave_SQL_Running:Yes
两个状态为YES,代表:slave已经启动两个线程,一个为IO线程,一个为SQL线程!
8、然后在Master服务器创建一个数据库和表,
查看到数据库Discuz的表的内容,
9、查看从是否同步:主从之间数据同步成功!
五、搭建Discuz论坛网站
搭建LAP,需要让PHP与Apache整合,就是把PHP模块整合到Apache配置文件中去!
php的网站刚刚搭建完成,其他的设置都没有!
1、下载一个软件包,解压到指定的aphache发布目录,
2、赋予discuz目录完全访问权限,
chmod -R 777 data/ uc_server/ config/ uc_client/
3、进入Discuz论坛安装,完成向导安装。
六、模拟故障,测试MYSQL主、从数据库之间的切换
1、关闭主数据库,网站立刻报数据库出错!
2、修改apache的Discuz论坛的的配置文件:为slave的ip!
vi /var/www/html/config/config_ucenter.php
vi /var/www/html/config/config_global.php
vi /var/www/html/uc_server/data/config.inc.php
3、在slave上授权LAP访问Discuz数据库:
4、重启LAP、MYSQL服务!
5、打开Discuz首页,完成主从数据库的切换!Discuz论坛首页重现!
本文出自 “柏书兵-系统运维” 博客,转载请与作者联系!