mysql replication(主从复制)(一)MS模式
2015-09-20 10:43
706 查看
1、理论部分
[b]1.1、mysql replication的概念:[/b]
enables data from one mysql database server(the master) to be replicated to one or more mysql database servers(the slaves).
1)可以将数据从一台数据库服务器(master)复制到一到多台数据库服务器(slave)
2)默认情况下,属于异步复制。因此无需维持长连接。
3)通过配置,你可以复制所有的库或者某几个库,甚至库中的几个表。
[b]1.2、mysql replication的实现基础:[/b]
Binary Log(二进制日志)是实现mysql主从复制的基础
Binary Log的概念:所有的、无论是明确的或隐含的可以引起数据库发生改变的语句都要记录于Binary Log。
主从备份涉及的日志文件有:
Binary log(二进制日志)
Relay log(中继日志)
简单的说,就是master将数据库的改变写进二进制日志,slave同步这些二进制日志,并根据这些二进制日志进行数据库操作。
[b]1.3、mysql Replication的用途[/b]1)Fail Over(故障切换)
2)Backup Server(备份服务,不能应对错误的命令操作)
3)High Perfomance(高性能)
[b]1.4、mysql replication的分类:[/b]1)主从(M-S)
2)主主(M-M)
[b]1.5、mysql replication的商业价值:[/b]
首先服务器的扩展方式有:1)scale up:提高原有应用的服务器性能
2)scale out:原有服务器以及应用不变,增加服务器。
服务器遇到性能瓶颈,向上扩展(scale up)的成本过高,假设服务器现有价格是M,性能扩展N倍,成本往往是M*N倍还要多的多的代价才能提高N倍的性能。
[b]1.6、mysql的集群类型[/b]
cluster分类:
1)Load Balancing(负载均衡集群),两台服务器均同时提供服务。
2)High Availability(高可用集群),属于冗余机制,只单台提供服务。
3)High Preformance(高性能集群),例子如超级计算机,将非常大的运算需求,自动分割成N片,每一片交给一台计算机处理,处理完成后再返回结果给切割的计算机重新整合。
mysql既有负载均衡能力,又有高可用的特征,从某种意义来讲,负载均衡本身就具有高可用的特征,但高可用并不能提供负载均衡的能力。
[b]1.7、mysql的同步异步问题[/b]
同步异步概念:
Async(异步)-通讯无确认信号返回,发送方无需等待接收方回应任务即中止,异步可以提供更好的性能表现。
Sync(同步)-通讯有确认信号返回,发送方需等待接收方回应任务才中止。
mysql主从架构属于异步架构
[b]1.8、实现主从复制的相关线程[/b]
mysql主从的线程:
1)Dump thread,负责把数据倾泻给从服务器的线程。
2)I/o thread,负责接收主服务器倾泻过来的线程。
3)sql thread,从中继日志中读取数据并在本地应用数据的线程。
2、实验部分
[b]2.1、实验环境[/b]
[b][b]2.1.1、基本信息[/b][/b]
1)mysql主服务器(Master):
ipaddress=10.168.0.103
hostname=sql-m
2)mysql从服务器(Slave):
ipaddress=10.168.0.104
hostname=sql-s
[b][b]2.1.2、mysql的安装与初始化[/b][/b]
In Master&Slave:
以上主机均需要先安装mysql相关rpm包:
初始化完成后,做登录测试:
[b][b]2.1.2、防火墙配置[/b][/b]
In Master&Slave:vim编辑/etc/sysconfig/iptables文件:
重启防火墙:
[b][b]2.1.3、percona xtrabackup的安装[/b][/b]
In Master&Slave:
[b]2.2、实验步骤[/b]
[b][b]2.2.1、step1[/b][/b]
Slave是通过mysql连接登录到Master上读取二进制日志的。因此需要在Master上给Slave配置权限。
In Master:
数据库设置:
In Slave:
做如下测试:
[b][b]2.2.2、step2[/b][/b]
In Master:
1)打开二进制日志,并标识server-id
2)server-id用于唯一标识主机,数字取值范围1至2的32处方减1
vim编辑/etc/my.cnf:
重新启动mysqld服务:
检查设置是否成功:
[b][b]2.2.3、step3[/b][/b]
In Master:
制作一个Master的完整备份,并执行prepare.
以上工具可以记录二进制编号,从服务器导入数据后再后执行同步会从该编号后面开始执行。
[b][b]2.2.4、step4[/b][/b]把备份拷贝到slave,并放入数据库文件目录。
In Slave
In Slave:
In Slave:
在Slave上配置server-id,标识服务器。
vim编辑/etc/my.cnf
配置完成后重启服务:
[b][b]2.2.6、step6[/b][/b]
In Slave:
查看并记录二进制日志中的position ID。
记录下以上标红部分,step7要用。
[b][b]2.2.7、step7[/b][/b]
配置Slave Replication。
In Slave:
启动Replication,并检查结果。
In Slave:
红标部分都要为Yes
In Master
In Master
MSS模式请参阅博文:
http://cmdschool.blog.51cto.com/2420395/1697067
开启GTIDs技术请参阅:
/article/4214683.html
MM模式请参阅博文:
/article/4214686.html
本文出自 “老谭linux集群博客” 博客,请务必保留此出处http://cmdschool.blog.51cto.com/2420395/1696474
[b]1.1、mysql replication的概念:[/b]
enables data from one mysql database server(the master) to be replicated to one or more mysql database servers(the slaves).
1)可以将数据从一台数据库服务器(master)复制到一到多台数据库服务器(slave)
2)默认情况下,属于异步复制。因此无需维持长连接。
3)通过配置,你可以复制所有的库或者某几个库,甚至库中的几个表。
[b]1.2、mysql replication的实现基础:[/b]
Binary Log(二进制日志)是实现mysql主从复制的基础
Binary Log的概念:所有的、无论是明确的或隐含的可以引起数据库发生改变的语句都要记录于Binary Log。
主从备份涉及的日志文件有:
Binary log(二进制日志)
Relay log(中继日志)
简单的说,就是master将数据库的改变写进二进制日志,slave同步这些二进制日志,并根据这些二进制日志进行数据库操作。
[b]1.3、mysql Replication的用途[/b]1)Fail Over(故障切换)
2)Backup Server(备份服务,不能应对错误的命令操作)
3)High Perfomance(高性能)
[b]1.4、mysql replication的分类:[/b]1)主从(M-S)
2)主主(M-M)
[b]1.5、mysql replication的商业价值:[/b]
首先服务器的扩展方式有:1)scale up:提高原有应用的服务器性能
2)scale out:原有服务器以及应用不变,增加服务器。
服务器遇到性能瓶颈,向上扩展(scale up)的成本过高,假设服务器现有价格是M,性能扩展N倍,成本往往是M*N倍还要多的多的代价才能提高N倍的性能。
[b]1.6、mysql的集群类型[/b]
cluster分类:
1)Load Balancing(负载均衡集群),两台服务器均同时提供服务。
2)High Availability(高可用集群),属于冗余机制,只单台提供服务。
3)High Preformance(高性能集群),例子如超级计算机,将非常大的运算需求,自动分割成N片,每一片交给一台计算机处理,处理完成后再返回结果给切割的计算机重新整合。
mysql既有负载均衡能力,又有高可用的特征,从某种意义来讲,负载均衡本身就具有高可用的特征,但高可用并不能提供负载均衡的能力。
[b]1.7、mysql的同步异步问题[/b]
同步异步概念:
Async(异步)-通讯无确认信号返回,发送方无需等待接收方回应任务即中止,异步可以提供更好的性能表现。
Sync(同步)-通讯有确认信号返回,发送方需等待接收方回应任务才中止。
mysql主从架构属于异步架构
[b]1.8、实现主从复制的相关线程[/b]
mysql主从的线程:
1)Dump thread,负责把数据倾泻给从服务器的线程。
2)I/o thread,负责接收主服务器倾泻过来的线程。
3)sql thread,从中继日志中读取数据并在本地应用数据的线程。
2、实验部分
[b]2.1、实验环境[/b]
[b][b]2.1.1、基本信息[/b][/b]
1)mysql主服务器(Master):
ipaddress=10.168.0.103
hostname=sql-m
2)mysql从服务器(Slave):
ipaddress=10.168.0.104
hostname=sql-s
[b][b]2.1.2、mysql的安装与初始化[/b][/b]
In Master&Slave:
以上主机均需要先安装mysql相关rpm包:
yum -y install mysql-server mysql-devel mysql chkconfig mysqld on /etc/init.d/mysqld start mysql_secure_installation初始化步骤如下(请根据实际情况选):
初始化完成后,做登录测试:
mysql -uroot -p
[b][b]2.1.2、防火墙配置[/b][/b]
In Master&Slave:vim编辑/etc/sysconfig/iptables文件:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT编辑完成效果:
重启防火墙:
/etc/init.d/iptables restart
[b][b]2.1.3、percona xtrabackup的安装[/b][/b]
In Master&Slave:
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm yum install percona-xtrabackup以上如果安装后执行innobackupex指令提示不支持mysql版本错误,请改为20版本:
yum -y remove percona-xtrabackup yum -y install percona-xtrabackup-20
[b]2.2、实验步骤[/b]
[b][b]2.2.1、step1[/b][/b]
Slave是通过mysql连接登录到Master上读取二进制日志的。因此需要在Master上给Slave配置权限。
In Master:
数据库设置:
mysql>grant replication slave on *.* to 'repl'@'10.168.0.104' identified by 'repl'; mysql>flush privileges;
In Slave:
做如下测试:
mysql>mysql -h10.168.0.103 -urepl -prepl
[b][b]2.2.2、step2[/b][/b]
In Master:
1)打开二进制日志,并标识server-id
2)server-id用于唯一标识主机,数字取值范围1至2的32处方减1
vim编辑/etc/my.cnf:
[mysqld] log-bin #开启二进制日志 binlog-format=row #指定二进制日志以row格式记录(增加实物支持性、增加同步性能) sync-binlog=1 #官方推荐打开的参数 server-id=1 #设定server id
重新启动mysqld服务:
/etc/init.d/mysqld restart
检查设置是否成功:
ls /var/lib/mysql/
[b][b]2.2.3、step3[/b][/b]
In Master:
制作一个Master的完整备份,并执行prepare.
mkdir /var/lib/backup innobackupex --user=root --password=xxx /var/lib/backup/
innobackupex --use-memory=500m --apply-log /var/lib/backup/2015-09-21_07-18-34
以上工具可以记录二进制编号,从服务器导入数据后再后执行同步会从该编号后面开始执行。
[b][b]2.2.4、step4[/b][/b]把备份拷贝到slave,并放入数据库文件目录。
In Slave
mkdir /var/lib/backupIn Master:
scp -r /var/lib/backup/2015-09-21_07-18-34 10.168.0.104:/var/lib/backup/
In Slave:
/etc/init.d/mysqld stop cd /var/lib/backup/2015-09-21_07-18-34 cp -R * /var/lib/mysql chown -R mysql:mysql /var/lib/mysql /etc/init.d/mysqld start mysql -uroot -p登录后做数据库检查:
mysql>show databases; mysql>exit[b][b]2.2.5、step5[/b][/b]
In Slave:
在Slave上配置server-id,标识服务器。
vim编辑/etc/my.cnf
[mysqld] server-id=2配置效果:
配置完成后重启服务:
/etc/init.d/mysqld restart
[b][b]2.2.6、step6[/b][/b]
In Slave:
查看并记录二进制日志中的position ID。
cd /var/lib/mysql cat xtrabackup_binlog_info
记录下以上标红部分,step7要用。
[b][b]2.2.7、step7[/b][/b]
配置Slave Replication。
In Slave:
mysql>change master to ->master_host='10.168.0.103', ->master_user='repl', ->master_password='repl', ->master_log_file='mysqld-bin.000004', ->master_log_pos=106;[b][b]2.2.8、step8[/b][/b]
启动Replication,并检查结果。
In Slave:
mysql>start slave; mysql>show slave status\G;
红标部分都要为Yes
In Master
In Master
mysql -uroot -p show databases; create database cmdschool; show databases;In Slave
show databases;对比效果如下(左Master,右Slave):
MSS模式请参阅博文:
http://cmdschool.blog.51cto.com/2420395/1697067
开启GTIDs技术请参阅:
/article/4214683.html
MM模式请参阅博文:
/article/4214686.html
本文出自 “老谭linux集群博客” 博客,请务必保留此出处http://cmdschool.blog.51cto.com/2420395/1696474
相关文章推荐
- JDBC MySQL 连接符 附加属性 (编码及别名处理)
- Navicat for MySQL 11.0.10 +破解补丁
- MySQL备份与恢复
- 【MySQL】查看MySQL配置文件路径及相关配置
- Mysql学习笔记(四)聊聊数据库索引
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- mac Can't connect to MySQL server on '127.0.0.1' (61)
- Host "localhost " is not allowed to connect to mysql server解决方法
- mysql通过文档读取并执行命令之快速为mysql添加多用户和数据库技巧
- MySQL数据库的操作基础
- mysql学习笔记——远程连接数据库
- MySQL 性能优化的最佳 20+ 条经验
- mysql安装完成后启动详解
- MySQL基本使用
- Mysql错误消息 语言设置
- MySQL字符集问题
- Mysql安装过程中遇到的问题及解决办法
- 最新版的mysql安装步骤
- hive的远程模式安装(用mysql作为hive的元数据库)
- 用mysqldump --master-data 建立slave