mysql 配置主从 读写分离 配置记录

本文介绍在LNMP环境下MySQL主从配置的过程,包括安装MySQL、创建数据库、配置主从复制、设置权限等关键步骤,并提供两种导入数据的方法。

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

主要用的环境套件是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进行读写分离操作了
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值