lnmp中centos7配置mysql.5.7主从读写分离配

本文详细介绍了如何在CentOS 7 Mini版上使用LNMP一键部署包搭建MySQL主从同步环境,包括安装必备组件、配置主从服务器等步骤,并提供了TP框架下读写分离的具体设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔者参考的是这篇博文:http://blog.youkuaiyun.com/jiaoshenmo/article/details/51181773

在配置的过程成发现有些地方没说清楚,绕过了几个坑才配置完成的。


首先你玩的话肯定是在本地玩,流程没问题你才到服务器上配置。

我使用的镜像版本CentOS-7.0-1406-x86_64-Minimal.iso系统,我比较喜欢Mini版,因为才500多m

镜像安装教程:http://www.360doc.com/content/15/1013/10/18232756_505284501.shtml

安装wget指令,不安装的话无法下载lnmp安装包了。按顺序执行如下致命

yum -y install wget
yum -y install setup
yum install perl
 

PS:可以先安装好一台,其它两台镜像复制即可

准备好三台服务器,一台做master,另外两台为

slave:master:192.168.153.128(主)  注意你安装的系统的ip可能跟我不一样的,通过指令 ip -a 来查看自己的本地ip

slave:192.168.153.129

slave:192.168.153.130

直接lnmp一键环境,方便,你懂得。怎么搭建你到这个网站查看(http://www.lnmp.org)安装的时候注意mysql选择版本是5.7的,安装完成了以后记得使用ip在自己本地系统浏览器上看能不能打通

master配置: 

找到mysql的配置文件my.cnf,在/etc/my.cnf末尾添加如下参数
log-bin=/home/mysql-binserver-id=1innodb_flush_log_at_trx_commit=1sync_binlog=1binlog-do-db=test #test为指定要同步的数据库,如果不指定,则默认所有数据库
你一定要把master服务器的test数据库备份还原到两台slave服务器,并且保证主从数据都是一致的。然后才能开启同步,继续往下走
slave配置: 
找到mysql配置文件my.cnf,修改参数成如下配置,注意是修改,不是添加!!!
server-id=2 #slave的标示 ,192.168.153.129这台服务器配置
server-id=3 #slave的标示 ,192.168.153.130这台服务器配置 


 
  
 
  
master配置(进入mysql终端): 
①在master中增加用于数据同步的账户:
grant replication slave on *.* to 'repl_user'@'%' identified by '123456';

'repl_user' 代表用户名  '123456'表示密码  '%'表示所有ip都可以访问
在master中查看Master status,待会用到

show master status;

显示如下图:


slave配置(进入mysql终端) 

stop slave;
change master to
master_user='repl_user',master_password='123456',master_host='192.168.153.128',master_port=3306,master_log_file='mysql-bin.000013',master_log_pos=154; 

start slave;
注意修改相应的参数,解释:
master_host填主服务器( master)IP
master_log_file填上图( master主服务器查询)的FIle字段
master_log_pos填上图( master 主服务器查询)的Position字段

到此就完成了!!!!

检查是否成功:
直接在slave服务器键入如下代码
show slave status;
如果看到 Slave_Io_State 字段有 :
Waiting for master to send event ... 

并且

show slave status\G; 

查找如下这两个参数为Yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

那就成功了 ! ! !可以去master服务器去操作test数据库,然后去slave查看是否会真的同步

注意:
①编程的时候要注意,master来写数据,slave负责读,不要去slave写数据,否则就同步不了。如果同步不了就重启一下stop slave; 那个步骤

扩展,TP框架的读写分离配置,我的配置文件如下:
读写分离的话使用两台服务器就可以了,第三台拿来备份
thinkphp读写分离
'DB_DEPLOY_TYPE'=> 1,
'DB_RW_SEPARATE'=>true, //启用智能读写分离
'DB_TYPE'   => 'mysql', // 数据库类型
'DB_HOST'   => '192.168.153.128,192.168.153.129', // 数据库服务器地址 master(写)/slave(读)
'DB_NAME'   => 'test', // 数据库名
'DB_USER'   => 'master,slave', // 用户名
'DB_PWD'    => '123456,123456', // 密码
'DB_PORT'   => 3306, // 端口
'DB_PREFIX' => '', // 数据库表前缀
'DB_CHARSET'=> 'utf8', // 字符集







<think>由于用户要求使用源码编译安装,且指定了版本(Nginx 1.28, MySQL 5.7, PHP 7.4),我们将编写一个在CentOS 7.9上通过源码编译安装LNMP的脚本。 注意:源码编译安装通常比较耗,且需要解决依赖问题。我们将分步骤进行。 步骤概述: 1. 安装必要的开发工具和依赖包 2. 编译安装Nginx 1.28 3. 编译安装MySQL 5.7 4. 编译安装PHP 7.4 5. 配置LNMP环境 注意:MySQL 5.7的源码编译需要大量的内存(建议至少2GB),如果内存不足,可能会失败。 我们将编写一个Shell脚本,但请注意,由于编译安装的复杂性,脚本可能需要根据实际情况调整。 由于MySQL 5.7的源码编译较为复杂,我们也可以考虑使用官方预编译的二进制包进行安装,但用户要求源码搭建,因此我们将使用源码编译MySQL。 但请注意:完全使用源码编译MySQL 5.7需要安装很多依赖,并且步骤繁琐。因此,我们也可以使用Oracle提供的源码编译好的二进制tar包来安装,这样既满足“源码搭建”(指不使用yum包管理器,而是使用原始包)的要求,又相对简单。 这里我们采用折中方案:使用官方编译好的二进制包(Generic Linux)进行安装,这样避免了从C++源码开始编译的漫长过程。如果用户坚持要完全从源码编译,则需要更复杂的步骤(包括下载源码、安装依赖、编译等),但通常在生产环境中,我们使用官方编译好的二进制包即可。 因此,我们将: - Nginx:从源码编译安装 - MySQL:使用官方编译好的二进制包安装(解压后配置即可) - PHP:从源码编译安装 如果用户坚持MySQL也要从源码编译,我们可以调整,但考虑到间和复杂性,这里使用二进制包安装MySQL。 下面开始编写脚本:</think>以下是在 CentOS 7.9 中使用 Shell 脚本源码搭建 LNMP 环境(Nginx 1.28 + MySQL 5.7 + PHP 7.4)的完整方案: ```bash #!/bin/bash # CentOS 7.9 源码编译安装LNMP脚本 # 组件版本:Nginx 1.28 | MySQL 5.7 | PHP 7.4 set -e # 安装基础依赖 install_dependencies() { yum install -y epel-release yum groupinstall -y "Development Tools" yum install -y wget cmake gcc gcc-c++ make autoconf libtool \ zlib zlib-devel openssl openssl-devel pcre pcre-devel \ libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel \ freetype freetype-devel curl curl-devel libxslt libxslt-devel \ bzip2 bzip2-devel libicu-devel } # 编译安装 Nginx 1.28 install_nginx() { cd /usr/local/src wget https://nginx.org/download/nginx-1.28.0.tar.gz tar zxvf nginx-1.28.0.tar.gz cd nginx-1.28.0 ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-pcre \ --with-stream make -j $(nproc) && make install # 创建系统服务 cat > /etc/systemd/system/nginx.service <<EOF [Unit] Description=nginx service After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable nginx echo "Nginx 1.28 安装完成" } # 编译安装 MySQL 5.7 install_mysql() { # 创建用户和目录 groupadd mysql useradd -r -g mysql -s /bin/false mysql mkdir -p /usr/local/mysql /data/mysql chown -R mysql:mysql /data/mysql cd /usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44.tar.gz tar zxvf mysql-5.7.44.tar.gz cd mysql-5.7.44 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DTRACE=0 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DWITH_EXTRA_CHARSETS=all make -j $(nproc) && make install # 初始化数据库 cd /usr/local/mysql bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql # 配置文件 cat > /etc/my.cnf <<EOF [mysqld] basedir=/usr/local/mysql datadir=/data/mysql socket=/tmp/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4 socket=/tmp/mysql.sock [mysql] default-character-set=utf8mb4 EOF # 创建系统服务 cp support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on # 启动MySQL并设置root密码 service mysqld start /usr/local/mysql/bin/mysqladmin -u root password "Root@123" echo "MySQL 5.7 安装完成" } # 编译安装 PHP 7.4 install_php() { cd /usr/local/src wget https://www.php.net/distributions/php-7.4.33.tar.gz tar zxvf php-7.4.33.tar.gz cd php-7.4.33 ./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-config-file-scan-dir=/usr/local/php/conf.d \ --enable-fpm \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-openssl \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg \ --with-png-dir \ --with-freetype \ --enable-mbstring \ --with-xmlrpc \ --enable-soap \ --enable-opcache \ --enable-pcntl \ --enable-sockets \ --enable-bcmath make -j $(nproc) && make install # 配置文件和用户 useradd -M -s /sbin/nologin www cp php.ini-production /usr/local/php/etc/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf # 创建系统服务 cat > /etc/systemd/system/php-fpm.service <<EOF [Unit] Description=PHP FastCGI Process Manager After=network.target [Service] Type=simple PIDFile=/run/php-fpm.pid ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf ExecReload=/bin/kill -USR2 \$MAINPID [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable php-fpm echo "PHP 7.4 安装完成" } # 配置LNMP集成 configure_lnmp() { # 配置Nginx支持PHP sed -i '/location ~ \\.php\$/d' /usr/local/nginx/conf/nginx.conf cat >> /usr/local/nginx/conf/nginx.conf <<EOF location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } EOF # 创建测试文件 echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php # 启动服务 systemctl start php-fpm systemctl restart nginx # 配置环境变量 echo 'export PATH=/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/php/bin:$PATH' >> /etc/profile source /etc/profile # 开放防火墙 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload } # 主执行流程 main() { [ "$(id -u)" != "0" ] && echo "需要root权限" && exit 1 echo ">>> 安装依赖包" install_dependencies echo ">>> 编译安装Nginx 1.28" install_nginx echo ">>> 编译安装MySQL 5.7" install_mysql echo ">>> 编译安装PHP 7.4" install_php echo ">>> 配置LNMP集成环境" configure_lnmp echo -e "\n\033[32mLNMP环境安装完成!\033[0m" echo "访问地址: http://服务器IP/index.php" echo "MySQL root密码: Root@123" echo "PHP版本: $(/usr/local/php/bin/php -v | head -n 1)" echo "Nginx版本: $(/usr/local/nginx/sbin/nginx -v 2>&1)" echo "MySQL版本: $(/usr/local/mysql/bin/mysql --version)" } main ``` ### 使用说明: 1. 保存为 `install_lnmp.sh` 2. 添加执行权限:`chmod +x install_lnmp.sh` 3. 执行脚本:`sudo ./install_lnmp.sh` ### 安装流程: 1. 安装编译依赖工具链 2. 源码编译安装 Nginx 1.28(开启SSL/HTTP2等模块) 3. 源码编译安装 MySQL 5.7配置UTF8mb4字符集) 4. 源码编译安装 PHP 7.4(启用FPM和常用扩展) 5. 集成配置并启动服务 ### 验证安装: 1. Nginx:`http://服务器IP/index.php` 查看PHP信息页 2. MySQL:`mysql -u root -pRoot@123` 3. PHP:`/usr/local/php/bin/php -v` ### 重要路径: - Nginx配置:`/usr/local/nginx/conf/nginx.conf` - MySQL数据:`/data/mysql` - PHP配置:`/usr/local/php/etc/php.ini` - 网站根目录:`/usr/local/nginx/html` ### 注意事项: 1. 需要至少 2GB 内存(MySQL编译需要较大内存) 2. 完整编译过程需要 30-60 分钟(取决于服务器性能) 3. 默认MySQL root密码为 `Root@123`(生产环境需修改) 4. 如需调整编译参数,可修改脚本中 `configure` 部分 5. 防火墙需开放80端口(脚本已自动配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值