设为首页 收藏本站
查看: 709|回复: 0

[经验分享] lnmp应用分离+keepalived+mysql互为主备

[复制链接]
YunVN网友  发表于 2018-10-2 13:12:26 |阅读模式
  nginx+php:192.168.198.135,192.168.198.131
  keepalived-master:192.168.198.228
  keepalived-slave:192.168.198.229
  mysql+keepalived:192.168.198.134,192.168.198.141
  discuz:http://ahdx.down.chinaz.com/201710/Discuz_X3.4_SC_UTF8_1001.zip
  1、安装nginx
  ①源码
  ②yum安装(我使用了这个)
  yum install -y nginx
DSC0000.jpg

  2、安装mariadb
  ①源码
  ②yum安装(我使用了这个)
  yum install -y epel-release
  yum install -y mariadb-server mariadb
  yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y
  (1)mariadb主从配置(my.cnf)
  主:
  [mysqld]
  server-id=1
  datadir=/var/lib/mysql
  socket=/var/lib/mysql/mysql.sock
  user=mysql
  wait_timeout            = 300
  #skip_name_resolve       = 1
  #explicit_defaults_for_timestamp=true
  #symbolic-links          =0
  max_allowed_packet      = 100M
  thread_stack            = 192K
  thread_cache_size       = 8
  max_connections         = 1000
  max_connect_errors      = 1500
  transaction_isolation   = READ-COMMITTED
  #explicit_defaults_for_timestamp = 1
  join_buffer_size        = 134217728
  tmp_table_size          = 67108864
  tmpdir                  = /tmp
  #innodb_log_buffer_size  = 32M
  #innodb_log_file_size    = 48M
  #innodb_page_size = 8192
  #innodb_buffer_pool_size = 12G
  #innodb_buffer_pool_instances = 8
  #innodb_buffer_pool_load_at_startup = 1
  #innodb_buffer_pool_dump_at_shutdown = 1
  #innodb_lru_scan_depth = 2000
  #innodb_lock_wait_timeout = 5
  #innodb_io_capacity = 4000
  #innodb_io_capacity_max = 8000
  #innodb_flush_method = O_DIRECT
  #innodb_file_format = Barracuda
  #innodb_file_format_max = Barracuda
  query_cache_limit       = 32M
  query_cache_size        = 32M
  expire_logs_days        = 10
  max_binlog_size         = 100M
  #for replication
  log-bin=mysql-bin
  log-bin=test-bin
  binlog-do-db=test
  binlog-do-db=discuz
  binlog-do-db=db
  binlog-ignore-db=mysql
  binlog-ignore-db=information_schema
  binlog-ignore-db=performance_schema
  #binlog-ignore-db=oc
  [client]
  #socket=/app/mysql/lib/mysql.sock
  socket=/var/lib/mysql/mysql.sock
Disabling symbolic-links is recommended to prevent assorted security risks
  #symbolic-links=0
Settings user and group are ignored when systemd is used.
If you need to run mysqld under a different user or group,
customize your systemd unit file for mariadb according to the
instructions in http://fedoraproject.org/wiki/Systemd
  [mysqld_safe]
  log-error=/var/log/mariadb/mariadb.log
  pid-file=/var/run/mariadb/mariadb.pid
  #
include all files from the config directory
  #
  !includedir /etc/my.cnf.d
  从:
  [mysqld]
  datadir=/var/lib/mysql
  socket=/var/lib/mysql/mysql.sock
  character_set_server=utf8
  #default-storage-engine=innodb
  init_connect='SET NAMES utf8'
  log-bin=test-bin
  port=3306
  #import csv file
  secure_file_priv=""
  max_connections         = 1000
  max_connect_errors      = 1000
  join_buffer_size        = 11382893
  tmp_table_size          = 6710886
  tmpdir                  = /tmp
Disabling symbolic-links is recommended to prevent assorted security risks
  symbolic-links=0
Settings user and group are ignored when systemd is used.
If you need to run mysqld under a different user or group,
customize your systemd unit file for mariadb according to the
instructions in http://fedoraproject.org/wiki/Systemd
inno settings
  #innodb_buffer_pool_size = 5G
  #innodb_log_buffer_size  = 32M
  #innodb_log_file_size    = 512M
  #innodb_lru_scan_depth = 2000
  #innodb_lock_wait_timeout = 5
  #innodb_io_capacity = 4000
  #innodb_io_capacity_max = 8000
  #innodb_flush_method = O_DIRECT
  #innodb_file_format = Barracuda
  #innodb_file_format_max = Barracuda
  #innodb_flush_neighbors = 1
  #innodb_log_file_size = 2G
  #innodb_log_buffer_size = 10777216
  #innodb_purge_threads = 4
  #innodb_large_prefix = 1
  #innodb_thread_concurrency = 64
  #innodb_print_all_deadlocks = 1
  #innodb_strict_mode = 1
  #innodb_sort_buffer_size = 67108864
  #####Logs Settings#####
  #innodb_log_buffer_size = 10777216
  #innodb_purge_threads = 4
  #innodb_large_prefix = 1
  #innodb_thread_concurrency = 64
  #innodb_print_all_deadlocks = 1
  #innodb_strict_mode = 1
  #innodb_sort_buffer_size = 67108864
  #####Logs Settings#####
  query_cache_limit       = 32M
  query_cache_size        = 32M
  expire_logs_days        = 10
  max_binlog_size         = 100M
  log-error=/var/log/mysqld.log
  pid-file=/var/run/mysqld/mysqld.pid
  server-id=134
  replicate-do-db=db
  replicate-do-db=test
  replicate-do-db=discuz
  replicate_wild_do_table=test.t2
  replicate_wild_do_table=test.t4
  ###replicate-do-db=erp
  #replicate-do-db=payment
  #replicate-do-db=crm
  #replicate-do-db=marketing
  #replicate-do-db=ocrp
  #replicate-do-db=oc
  slave-skip-errors=1032,1062,1050,1051,1677
  log-slave-updates=true
  relay-log=test-relay-bin
  #relay-log-index=relay-bin-index
  #skip-slave-start
  #slave-parallel-type=LOGICAL_CLOCK
  #slave-parallel-workers=16
  #slave_pending_jobs_size_max=120M
  #relay_log_info_repository=table
  #master_info_repository=table
  [mysqld_safe]
  log-error=/var/log/mariadb/mariadb.log
  pid-file=/var/run/mariadb/mariadb.pid
  #
include all files from the config directory
  #
  !includedir /etc/my.cnf.d
  (2)mariadb主从数据库的配置
  主:
  ①创建用户
  [root@zimbra ~]# mysql -u root -p123456 -e "create user repl;"
  ②授权远程访问(这一步不做好的话,通过vip访问会导致discuz会出现1045的报错)

  [root@zimbra ~]# mysql -u root -p123456 -e "grant all privileges on . to 'root'@'192.168.198.134'>
  MariaDB [mysql]> grant all privileges on . to 'root'@'192.168.198.141'>  Query OK, 0 rows affected (0.00 sec)

  MariaDB [mysql]> grant all privileges on . to 'root'@'192.168.198.135'>  Query OK, 0 rows affected (0.00 sec)

  MariaDB [mysql]> grant all privileges on . to 'root'@'192.168.198.131'>  Query OK, 0 rows affected (0.00 sec)

  MariaDB [mysql]> grant all privileges on . to 'root'@'192.168.198.23'>  Query OK, 0 rows affected (0.00 sec)
  MariaDB [mysql]> flush privileges;
  Query OK, 0 rows affected (0.00 sec)
  #####授权从库同步的账号

  [root@zimbra ~]# mysql -u root -p123456 -e "grant all privileges on . to 'repl'@'192.168.198.134'>
DSC0001.jpg

DSC0002.jpg

  从:
  [root@slave ~]# mysql -uroot -e "stop slave\G"
  [root@slave ~]# mysql -uroot
  Welcome to the MariaDB monitor.  Commands end with ; or \g.

  Your MariaDB connection>  Server version: 5.5.52-MariaDB MariaDB Server
  Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  MariaDB [(none)]> change master to  master_host='192.168.198.141',master_user='repl',master_password='123456',master_log_file='test-bin.000002',master_log_pos=3503;
  ###根据主pos来做从的数据库配置
DSC0003.jpg

  3、安装php
  wget http://cn2.php.net/distributions/php-5.6.0.tar.xz  再解压
  cd  /usr/local/src/php-5.6.0
  ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-readline --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/png --with-zlib --with-freetype-dir=/usr/local/freetype  --with-gd
DSC0004.jpg

  配置 PHP
  配置文件:
  cp php.ini-development /usr/local/php/etc/php.ini
  php-fpm 服务
  cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
  cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  chmod +x /etc/init.d/php-fpm
  php-fpm 可用参数 start|stop|force-quit|restart|reload|status
  添加 PHP 命令到环境变量
  编辑 ~/.bash_profile,添加:
  ###java env
  export JAVA_HOME=/usr/local/src/jdk1.6.0_45
  #export JRE_HOME=$JAVA_HOME/jre
  export PATH=$JAVE_HOME/bin:$JAVA_HOME/bin:$PATH

  export>  ###php env
  export PHP_HOME=/usr/local/php56
  #export JRE_HOME=$JAVA_HOME/jre
  export PATH=$PHP_HOME/bin:$PHP_HOME/bin:$PATH

  export>  ~/.bash_profile
  查看看 PHP 版本
  php -v
  PHP 5.6.0 (cli) (built: Sep 23 2014 03:44:18)
  Copyright (c) 1997-2014 The PHP Group
  Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
  4、keepalived配置
  mysql-keepalived
DSC0005.jpg

  因为mysql用不到那个lvs的东西,就注释了。
  nginx-keepalived(主和从的区别在于state和priority)
DSC0006.jpg

DSC0007.jpg

  在mariadb的show master status看到不会因为主的nginx机器挂掉而导致数据库连接丢失,因为有vip的
DSC0008.jpg

DSC0009.jpg

DSC00010.jpg

DSC00011.jpg

  5、安装phpMyAdmin
  wget https://files.phpmyadmin.net/phpMyAdmin/4.7.7/phpMyAdmin-4.7.7-all-languages.zip
  把压缩包放进去网址根目录,然后解压,把解压出来的文件夹重命名为phpmyadmin,然后再进去这个目录,把config.sample.inc.php复制为config.inc.php,有行$cfg['Servers'][$i]['host'] = 'localhost'; 把localhost改为你的数据库IP
DSC00012.jpg

  更改完毕就重启mariadb和nginx,再通过浏览器访问http://ip/phpmyadmin即可
DSC00013.jpg

  关于报错
  如果打开php页面404的话,很可能是nginx的配置文件导致的。
DSC00014.jpg

  红色圈住的那里要改成网站根目录才行
DSC00015.jpg

  mysql 1236报错
DSC00016.jpg

  解决:stop slave;reset slave;start slave;
  mysql 1050报错
DSC00017.jpg

  在my.cnf报错添加slave-skip-errors=1032,1062,1050,1677这段配置后重启mariadb即可
  重启机器时候或者keepalived服务没起来,通过这个http://blog.51cto.com/wsw26/2067195   脚本就能踢起来vip了


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-607592-1-1.html 上篇帖子: Step By Step 搭建 MySql MHA 集群 下篇帖子: Centos6.5 zabbix3.2.6监控mysql-12780274
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表