第十七章 MySQL主从配置

17.1 MySQL主从介绍

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步。
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。

主从过程

主将更改操作记录到binlog中
从将主的binlog事件(SQL语句)同步到本机并记录在relaylog中
从根据relaylog里面的SQL语句按顺序执行
说明: 该过程有三个线程,主上有一个log dump线程,用来和从的i/o线程传递binlog;从上有两个线程,其中i/o线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的SQL语句落地。

工作原理

mark

应用环境

备份重要数据
分担主库数据读取压力
17.2 准备工作

安装并启动MySQL服务。

17.3 配置主服务器

编辑配置文件添加如下参数:

[[email protected] ~]# vim /etc/my.cnf
……
server-id=132
#自定义
log_bin=centos-01linux1
#指定log前缀
编辑完成后重启mysql服务:

[[email protected] ~]# /etc/init.d/mysqld restart
Shutting down MySQL...... SUCCESS!
Starting MySQL.................. SUCCESS!
查看mysql库文件:

[[email protected] ~]# ls -lt /data/mysql/
……
-rw-rw---- 1 mysql mysql 20 8月 30 15:52 centos-01linux1.index
-rw-rw---- 1 mysql mysql 120 8月 30 15:52 centos-01linux1.000001
……
说明: 重启后生成两个前缀为centos-01linux1的二进制文件。

新建一个数据库为试验做准备:

[[email protected] ~]# cd /data/mysql/

备份一个数据库:
[[email protected] mysql]# mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql

新建一个数据库:
[[email protected] mysql]# mysql -uroot -p123456 -e "create database centos-01test"

将备份的数据恢复到新建的数据库中:
[[email protected] mysql]# mysql -uroot -p123456 centos-01test < /tmp/zrlog.sql
创建一个用于同步数据的用户:

[[email protected] mysql]# mysql -uroot -p123456
Welcome to the MySQL monitor.
mysql> grant replication slave on . to ‘repl‘@‘192.168.8.130‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.01 sec)
#IP为“从”的IP

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.12 sec)
#锁定数据表(目的是暂时使其不能继续写,保持现有状态用于同步)

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| centos-01linux1.000001 | 10844 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#记住file和position(设置主从同步时会使用)
mysql> quit
Bye
备份主库中所有数据库:

[[email protected] mysql]# mysqldump -uroot -p123456 centos-01 > /tmp/centos-01.sql
[[email protected] mysql]# mysqldump -uroot -p123456 centos-012 > /tmp/centos-012.sql
17.4 配置从服务器

编辑配置文件:

[[email protected] ~]# vim /etc/my.cnf
……
server-id=130
……

[[email protected] ~]# /etc/init.d/mysqld restart
Shutting down MySQL...... SUCCESS!
Starting MySQL.............................. SUCCESS!
说明: 从的server-id要和主的server-id不同。

配置完成后将主中备份的数据发送到从中:

[[email protected] ~]# scp 192.168.8.132:/tmp/*.sql /tmp/
The authenticity of host ‘192.168.8.132 (192.168.8.132)‘ can‘t be established.
ECDSA key fingerprint is 78:22:19:9e:d5:4a:9d:cb:71:54:d7:c0:9a:13:18:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.8.132‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
centos-012.sql 100% 1259 1.2KB/s 00:00
centos-01.sql 100% 1258 1.2KB/s 00:00
zrlog.sql 100% 9864 9.6KB/s 00:00
创建库:

[[email protected] ~]# mysql -uroot
Welcome to the MySQL monitor.
mysql> create database centos-01;
Query OK, 1 row affected (0.03 sec)

mysql> create database centos-012;
Query OK, 1 row affected (0.00 sec)

mysql> create database zrlog;
Query OK, 1 row affected (0.00 sec)
mysql> quit
Bye
恢复数据库:

[[email protected] ~]# mysql -uroot centos-01 < /tmp/centos-01.sql
[[email protected] ~]# mysql -uroot centos-012 < /tmp/centos-012.sql
[[email protected] ~]# mysql -uroot zrlog < /tmp/zrlog.sql
注意: 该过程要保证主从数据库内容的一致。

实现主从同步

[[email protected] ~]# mysql -uroot
Welcome to the MySQL monitor.
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.06 sec)
mysql> change master to master_host=‘192.168.8.132‘,master_user=‘repl‘,master_password=‘123456‘,master_log_file=‘centos-01linux1.000001‘,master_log_pos=10844;
Query OK, 0 rows affected, 2 warnings (0.46 sec)
#IP为主的IP;file、pos分别为主的filename和position。

检测主从是否建立成功:
mysql> start slave;
Query OK, 0 rows affected (0.22 sec)

mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
以上操作完成后,解锁主库的表(在主上操作):

[[email protected] mysql]# mysql -uroot -p123456
Welcome to the MySQL monitor.
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
至此主从配置搭建完成!!!

17.5 测试主从

参数介绍

主服务器:
binlog-do-db= 仅同步指定的库
binlog-ignore-db= 忽略指定的库

从服务器:
replicate_do_db= 同步指定的库
replicate_ignore_db= 忽略指定的库
replicate_do_table= 同步指定的表
replicate_ignore_table= 忽略指定的表

replicate_wild_do_table= 如aming.%,支持通配符
replicate_wild_ignore_table=
注: 进行从服务器的配置时尽量使用参数“replicatewild”,使匹配更精确,提升使用性能。

测试

主服务器:

mysql> show tables;
+---------------------------+
| Tables_in_centos-01test |
+---------------------------+
| columns_priv |
| db |
| event |
+---------------------------+

删除表:
mysql> drop table db;
mysql> show tables;
+---------------------------+
| Tables_in_centos-01test |
+---------------------------+
| columns_priv |
| event |
+---------------------------+
从服务器:

主服务器删除表之前:
mysql> show tables;
+---------------------------+
| Tables_in_centos-01test |
+---------------------------+
| columns_priv |
| db |
| event |
+---------------------------+
主服务器删除表之后:
mysql> show tables;
+---------------------------+
| Tables_in_centos-01test |
+---------------------------+
| columns_priv |
| event |
+---------------------------+
即,主从配置成功!

原文地址:http://blog.51cto.com/13242922/2094010

时间: 2024-10-11 23:17:19

第十七章 MySQL主从配置的相关文章

Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力.这种

笔记13(FTP配置、tomcat配置、resin配置、MySQL主从配置)

FTP服务搭建与配置 FTP介绍 FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输. FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机. 小公司用的多,大企业不用FTP,因为不安全. 使用vsftpd搭建ftp服务 centos上自带vsftpd 安装:yum instal

centos MySQL主从配置 第二十八节课

centos  MySQL主从配置   第二十八节课 上半节课 下半节课 f

mysql主从配置&&基于keepalived的主备切换

mysql互为主从设置 && 主备切换配置 需求说明: 1.公司架构一直是一台单独的mysql在线上跑,虽然一直没有出现什么宕机事件,但是出于一个高可用的考虑,提出主从备份.主备切换的需求: 2.实现这个需求的前一段时间只是在做数据库备份的时候实现了主从热备,为了实现主备切换功能,继续操作上述需求: 实验环境: master1:10.1.156.3:3306 master2:10.1.156.5:3306 my.cnf配置文件关于主从这块的修改: master1: server-id =

解读mysql主从配置及其原理分析(Master-Slave)

在windows下配置的,后面会在Linux下配置进行测试,需要配置mysql数据库同步的朋友可以参考下. 1.在主数据库服务器为从服务器添加一个拥有权限访问主库的用户:GRANT REPLICATION SLAVE ON *.* TO ' test'@'%' IDENTIFIED BY 'test'; (%表示允许所有IP,可设置指定从服务器IP)添加用户后:可在从服务器上用mysql -h127.0.0.1 -utest -ptest; 来测试是否有权限访问主数据库 2.在主据库配置文件加上

mysql主从配置思路

记录一下 原文:http://www.rjfw.com.cn/qamain/prevView.action?id=40482017200000031 mysql主从配置(清晰的思路) mysql主从配置.鄙人是在如下环境测试的: 主数据库所在的操作系统:win7 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111 从数据库所在的操作系统:linux 从数据的版本:5.0 从数据库的ip地址:192.168.1.112 介绍完了环境,就聊聊配置步骤: 1.确保主数据库与从数据库

Mysql主从配置+读写分离

Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. 注:安装前须查看是否已经安装了如下依赖包,如果没有请安装. apt-get -y install gcc g++ libncurses5-dev ncurses-devel openssl   一.主库安装及配置 1.源码安装cmake # tar xf cmake-3.0.0.tar.gz #

Linux下mysql主从配置

mysql服务器的主从配置,这样可以实现读写分离,也可以在主库挂掉后从备用库中恢复需要两台机器,安装mysql,两台机器要在相通的局域网内主机A: 192.168.1.100从机B:192.168.1.101可以有多台从机1.先登录主机 Amysql>GRANT REPLICATION SLAVE ON *.* TO ‘backup’@’192.168.1.101‘ IDENTIFIED BY ‘123456’;赋予从机权限,有多台丛机,就执行多次2. 打开主机A的my.cnf,输入server

mysql主从配置(清晰的思路)

mysql主从配置.鄙人是在如下环境测试的: 主数据库所在的操作系统:win7 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111 从数据库所在的操作系统:linux 主数据的版本:5.0 主数据库的ip地址:192.168.1.112 介绍完了环境,就聊聊配置步骤: 1.确保主数据库与从数据库一模一样. 例如:主数据库里的a的数据库里有b,c,d表,那从数据库里的就应该有一个模子刻出来的a的数据库和b,c,d表 2.在主数据库上创建同步账号. GRANT REPLICATI