MySQL主从环境搭建配置详解

=Start=

缘由:

工作需要,学习需要。

正文:

MySQL的主从架构:

由一个MySQL实例作为主库,接受读写请求,另外一个或多个MySQL实例通过MySQL的复制机制,将主库的数据同步到从库,从库会设置只读,防止主从数据不一致。

主从架构的好处:

如果主服务器出现问题,可以快速切换到从服务器提供服务;
可以在从服务器上执行查询,降低主服务器的压力;
可以在从服务器上执行备份,以避免备份期间影响主服务器的性能。
主从架构的局限:

由于MySQL实现的是异步复制,所以主从服务器之间的数据存在一定差异(延迟),对实时性要求高的数据仍然需要从主服务器上获得。

主从搭建步骤:

Step

主库(Master)

从库(Slave)


修改主库my.cnf配置文件,然后 需要重启生效

[mysqld]
 
#作为主库
#启动二进制文件(*)
log-bin=mysql-bin
#服务器ID(*)
server-id=1
 
#需要备份的数据库,多个写多行
binlog-do-db=orders
#不需要备份的数据库,多个写多行
binlog-ignore-db=mysql
修改从库my.cnf配置文件,然后 需要重启生效

[mysqld]
 
#作为从库(如果有多个从库,在各自的my.cnf中的server-id需要各不相同)
server-id=2
 
replicate-do-db=bash  #只复制某个库,多个写多行
replicate-ignore-db=mysql #不复制某个库,多个写多行
replicate-ignore-db=test
replicate-ignore-db=information_schema
2 创建从库用于连接主库的账号(repl)
mysql> GRANTREPLICATIONSLAVEON *.* TO 'repl'@'slave_ip' IDENTIFIEDBY 'password';
mysql> flushprivileges;
使用刚创建的 repl 账户在Slave所在主机上登录Master,测试用于复制的账户是否可以连接上
mysql -h master_ip -u repl -p
3 记录同步点
mysql> FLUSHTABLESWITHREADLOCK; //若要同步的数据库中已经有数据,还需要先用该语句锁定数据库
mysql> SHOWMASTERSTATUS; //查看Master状态,记录File和Position两个信息

将主库数据做逻辑备份或物理备份

mysql> flushtableswithreadlock;
 
shell> mysqldump -uroot -p --all-databases --master-data > backup.sql
 
shell> scp -C backup.sqluser@slave_ip:/tmp/
 
mysql> unlocktables;
5  在从库上恢复数据
shell> mysql -uroot -p </tmp/backup.sql
shell> rm -rf /tmp/backup.sql
6  
以root身份登录从库,并在从库上设置主库的相关信息(host、port、user等等)

mysql> CHANGEMASTERTO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
 
mysql> STARTSLAVE; //启动主从复制
 
mysql> SHOWSLAVESTATUS\G //查看slave状态
7 一切顺利的话,到这里,Master上的操作会被同步到Slave上。
在主库创建test_tb表,模拟数据库新增数据

mysql> create table test_tb(id int,name varchar(30)); 在从库查看是否存在test_tb表
mysql> show tables;

时间: 2024-09-23 20:03:05

MySQL主从环境搭建配置详解的相关文章

Java+MyBatis+MySQL开发环境搭建流程详解_java

主要搭建过程 1. pom.xml文件中加入mybatis和数据库依赖,这里使用mysql: <properties> <mybatis.version>3.2.3</mybatis.version> <mysql.version>5.1.26</mysql.version> <slf4j.api.version>1.7.5</slf4j.api.version> <testng.version>6.8.7&l

CentOS 7系统下的LEMP环境搭建配置详解

最近由于项目需求,将服务器从CentOS6升级到CentOS7,对应的PHP版本也升级到PHP5.6.我们熟悉的有LEMP环境一键安装包,但是本文我们将单独安装各个组件模块,并搭建一个完整的PHP运行平台. 我们常说的LNMP环境是指Linux/nginx/MySQL/PHP组合,而LEMP是什么呢?其实Nginx的发音是Engine-X = E,LEMP包是由Linux.nginx.MariaDB/MySQL和PHP组成的,那么看来LEMP和LNMP是一样的,而现在业内习惯性的称作LEMP.M

CentOS6系统MySQL主从数据库复制配置详解(1/3)

查看mysql端口是开启 netstat -tanl | grep 3306 MySQL用户的授权 mysql -uroot -p 查看现有的用户授权表 select user,host,password from mysql.user; 测试连接到其他mysql服务器 mysql -uroot -p -h192.168.0.100 授权用户user1,密码456所有权限从192.168.1.181主机访问本服务器的所有数据库. grant all on *.* to slave@192.168

PHP MySQL的安装与配置详解_Mysql

 一.安装配置PHP 1.下载Php的版本zip包之后,解压缩到指定目录.下载地址:http://www.php.net/downloads.php 2.在Apache的httpd.conf文件中加入以下 #Php模块加载 LoadModule php5_module "D:/Software/GreenSoft/Php/php5.4.6/php5apache2_2.dll" #php.ini路径设置 PHPIniDir "D:/Software/GreenSoft/Php/

mysql主从环境搭建

      Mysql主从环境: 主服务器IP:192.168.199.12     主机名 master 从服务器IP:192.168.199.10   主机名 slave 系统为:centos 6.5  64位 Mysql 5.1.73 64位     sestatus检查 1.关闭防火墙 2.关闭selinux   1.创建安装目录与数据存放目录   mkdir /opt/mysql mkdir /opt/mysql/data 2.创建mysql用户与组    useradd mysql

win7 php环境搭建教程:win7下php环境搭建步骤详解

  今天绿茶小编带给大家的是win7 php环境搭建教程,php新手如果不知道如何在win7下php环境搭建方法的话,那么接下来这篇文章就可以帮到你,步骤还是很详细的哦~ 以下是一些注意事项: 一.apache选择msi格式下载,一路next,ok,修改httpd.conf进行配置; 二.配置的LoadModule php5_module路径一定要正确设置,并且注意双引号为英文字符; 三.php配置按参考修改即可,一般无大问题; 四.配置完成apache不能启动报错:the requested

MySQL主主数据同步配置详解

MySQL主主同步和主从同步的原理一样,只是双方都是主从角色. 环境 操作系统版本:CentOS7 64位 MySQL版本:mysql5.6.33 节点1IP:192.168.1.205 主机名:edu-mysql-01 节点2IP:192.168.1.206 主机名:edu-mysql-02 MySQL 主从复制官方文档: http://dev.mysql.com/doc/refman/5.6/en/replication.html 注意: 1> 主从服务器操作系统版本和位数要保持一致 2>

Mysql 多实例启动配置详解

当开发与生产环境在同一台机器上,或需要在一台机器上部署多套测试环境时,往往需要同时起多个mysqld进程,最近帮测试搭环境的时候就碰到了这样的问题. 还是从安装mysql开始,下载tarball安装, 安装mysql  代码如下 复制代码 groupadd mysql useradd -g mysql mysql cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5.27/  -DMYSQL_DATADIR=/data/mysql  -DWITH_

MongoDB主从集群配置详解

创建必要的目录和认证文件: [root@mongo mongo]# mkdir keyfile [root@mongo mongo]# echo "mongo cluster one" > keyfile/m1 [root@mongo mongo]# echo "mongo cluster one" > keyfile/m2 [root@mongo mongo]# echo "mongo cluster one" > keyfi