主要用的环境套件是lnmp.org,
安装的教程页面是 https://lnmp.org/install.html,
状态管理命令看 https://lnmp.org/faq/lnmp-status-manager.html
该服务器只装MySQL,所以用
wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh db
最后只装MySQL 5.5.XX版本,过程中需要输入root的密码,记下这个密码,
Mysql的文件在 /usr/local/msyql
******************************************************************************************************
2台MySQL Linux主机装好MySQL后,
当前目录下已有备份文件DB1-my.cnf和DB2-my.cnf,
把DB1-和DB2-去掉只剩my.cnf然后分别替换 /etc/ 目录下的my.cnf,
DB1是MySQL主从配置的主机,
DB2是MySQL主从配置的从机,
其实两个文件内容差别只在 server-id = 4,
后用/etc/init.d/mysql restart 重启MySQL
登录MySQL管理界面:
mysql -uroot -p 输入密码后,
创建数据库database:
create database database
因为我在cnf配置文件里设置了同步的数据库是database,
所以这里创建这个名字的数据库,
在主从MySQL 2台服务器里授权web服务器可以访问:
grant all privileges on *.* to 'root'@'192.168.0.*' identified by '你设的密码';
刷新权限:
flush privileges;
/**192.168.0.* 是web服务器的内网ip*/
2台MySQL服务器都创建好数据库database后,分别 导入同一份数据,
内网IP访问MySQL服务器,两种方法导入数据:
法一、
装ssh软件和FileZilla软件,
用FileZilla软件登录MySQL服务器,
直接用22端口root用户登录MySQL服务器,把sql文件传到Linux服务器比如是root目录后,
在ssh里登录MySQL管理界面,选中数据库
use database
导入数据"
source /root/database.sql;
法二、
用naviCat登录MySQL服务器,记得MySQL服务器先开3306端口,
后选中database后右键,用运行 SQL 文件方法导入数据
【配置主从】
先在 主服务器 里配置Master-Slave的用户,
登录主MySQL管理界面后,授权从服务器用于备份的机子:
CREATE USER 'Masteuser'@'192.168.0.*' IDENTIFIED BY '自己设主从备份用户的密码';
grant replication slave,reload,super on *.* to Masteuser@192.168.0.* identified by '自己设主从备份用户的密码';
/**192.168.0.*是从服务器的内网ip,*/
刷新权限:
flush privileges;
然后查看log_file和 log_pos位置,
在从服务器用到:
show master status\G;
在 从服务器 里登录MySQL管理界面后:
change master to master_host='192.168.0.*',
master_user='Masteuser',
master_password='自己设主从备份用户的密码',
master_log_file='mysql-bin.000018',
master_log_pos=815,
master_connect_retry=10;
/**
*以上每输一行可以按回车,
*192.168.0.*是主服务器内网ip,
*mysql-bin.000018是你刚才在主服务器获取到的log_file,
*master_log_pos=815,这里815是log_pos位置
*/
启动主从同步备份,
start slave;
show slave status\G;
查看主从同步备份状态,
【查看这两项:Slave_IO_Running: Yes Slave_SQL_Running: Yes 是否为YES,yes为正常】。
******************************************************************************************************
******************************************************************************************************
******************************************************************************************************
【其他记录】
grant all privileges on *.* to 'G23L'@'192.168.0.2' identified by 'RZkrz7ux41sxGgMv';
grant all privileges on *.* to 'G23L'@'192.168.0.3' identified by 'RZkrz7ux41sxGgMv';
flush privileges;
[Err] 1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
错误提示已经很清楚了,你的这张表是已经有trigger了。
用命令 SHOW TRIGGERS 找一下。
CREATE USER 'Masteuser'@'192.168.0.3' IDENTIFIED BY 'master_password';
grant replication slave,reload,super on *.* to Masteuser@192.168.0.3 identified by 'master_password';
flush privileges;
show master status\G;
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000005
Position: 529358194
Binlog_Do_DB: database
Binlog_Ignore_DB: mysql,information-schema,performance_schema
1 row in set (0.00 sec)
ERROR:
No query specified
mysql -uroot -p -h 127.0.0.1
change master to master_host='192.168.0.1',
master_user='Masteuser2',
master_password='master_password',
master_port=3306,
master_log_file='mysql-bin.000005',
master_log_pos=529358194,
master_connect_retry=10;
start slave;
show slave status\G;
Relay_Master_Log_File: mysql-bin.000005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
******************************************************************************************************
******************************************************************************************************
******************************************************************************************************
【装Atlas MySQL读写分离中间件】
先在主从MySQL 2台服务器配置Atlas可以访问的账号,
分别登录MySQL管理界面,用命令
CREATE USER 'Masteuser2'@'192.168.0.*' IDENTIFIED BY '自己设的密码';
grant all privileges on *.* to 'Masteuser2'@'192.168.0.*' identified by '自己设的密码';
/**192.168.0.*是用于Atlas服务器的内网ip*/
刷新权限
flush privileges;
在Atlas服务器装Atlas,
用FileZilla传Atlas-2.2.1.el6.x86_64.rpm到root目录,安装:
sudo rpm –ivh Atlas-2.2.1.el6.x86_64.rpm
安装目录在/usr/local/mysql-proxy
启动命令:
/usr/local/mysql-proxy/bin/mysql-proxyd [实例名] start
停止命令:
/usr/local/mysql-proxy/bin/mysql-proxyd [实例名] stop
使用Atlas的加密工具对上面用户的密码(也就是你设置的Atlas可以访问账号的密码)进行加密:
/usr/local/mysql-proxy/bin/encrypt test123
/**(test123是你的密码) 输出的字符串记下来*/
实例的配置文件在 /usr/local/mysql-proxy/conf 下面,当前目录里也有一个 database.cnf 是其中一个目前在用的实例文件
此时的Atlas的管理命令变成 启动命令:
/usr/local/mysql-proxy/bin/mysql-proxyd database start
database.cnf文件需要修改的是 proxy-backend-addresses、proxy-read-only-backend-addresses、pwds、event-threads(这里一般设为Atlas服务器的CPU核数)、client-ips
然后启动Atlas:
/usr/local/mysql-proxy/bin/mysql-proxyd database start
进入atlas的管理界面:
mysql -h127.0.0.1 -P2345 -uuser -ppwd
直接回车,命令:
select * from help;
/**用于查看可以用的命令*/
当前目录也有些Atlas安装教程文件
Atlas开启远程访问权限及防火墙开放3306端口
Web服务器里的PHP程序就可以用 Masteuser 用户去访问Atlas进行读写分离操作了