复习电商笔记-21-linux版主从复制

 

主从复制Linux版本

 

 

配置主服务器

编辑主master服务器配置文件/etc/my.cnf

在[mysqld]节点下加入两句话

server-id=1
log-bin=mysql-bin		#启用二进制日志;

重启服务:service mysql restart

登录mysql:mysql –uroot -proot

mysql>flush tables with read lock;	#数据库锁表,不让写数据
mysql>show master status;	#查看MASTER状态(这两个值File和Position)

mysql>unlock tables;		#从启动好后,记得要解除锁定

 

 

配置从服务器

修改/etc/my.cnf增加一行

server-id=2

重启服务

service mysql restart

通过mysql命令配置同步日志的指向:

change master to master_host='192.168.170.43', master_port=3306,
master_user='root',master_password='root',
	master_log_file='mysql-bin.000007', 
	master_log_pos=609;

master_host       主服务器的IP地址

master_port       主服务器的PORT端口

master_log_file   和主服务器show master status中的File字段值相同

master_log_pos       和主服务器show master status中的Position字段值相同

 

 

启动从服务

start slave;				#stop slave;停止服务,出错时先停止,再重新配置
show slave status\G;		#查看SLAVE状态,\G结果纵向显示。必须大写
service mysql restart		#重启服务

注意:如果出错,可以看后面的错误信息。观察Slave_SQL_Running_State字段,它会记录详细的错误信息。如果正常,上面两个线程执行都应该是YES。这样当主库创建数据库、创建表、插入数据时,从库都会立刻同步,这样就实现了主从复制。

 

 

扩展:同步日志

binlog基本定义:二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存到磁盘中。

作用:可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和局域时间点的恢复)、MySQL的复制(主主数据库的复制、主从数据库的复制)

二进制日志的信息:

1)文件位置:默认存放位置为数据库文件所在目录下 /var/lib/mysql

2)文件的命名方式:名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog)

3)状态的查看

mysql> show variables like '%log_bin%';

保存日志的格式是二进制不能直接查看,必须借助命令行工具才能阅读。mysql自带了mysqlbinlog工具,一般放置在mysql安装目录下的bin目录下执行

mysqlbinlog mysql-bin.000001

后面那个参数是日志文件,日志文件一般放在mysql的数据库存储文件目录下,以配置文件log-bin的值为文件名,一串000001这样的数字为扩展名。

拓展:从库只读主从复制还可以进行吗?

 

一主两从

 

 

一主多从

这种方案好处是对主的影响最小,但缺点是越往后的同步的时间越久。

注意:这两种方式的同步都会有时间差,在非常大的并发下,同步的时间差就会暴漏出来,导致可能查询的数据读到脏数据。

所以最终解决方案应该是分布式。

 

 

主从从链条

这种结构不行。第二个从配置为第一个从的子节点。目的是,主修改数据,从1数据随主修改,从2数据随从1修改。但实际中是实现不了的。现象为主修改,从1修改,从2不变。从1修改,从2才修改。

分布式数据库系统的优点

降低费用。分布式数据库在地理上可以式分布的。其系统的结构符合这种分布的要求。允许用户在自己的本地录用、查询、维护等操作,实行局部控制,降低通信代价,避免集中式需要更高要求的硬件设备。而且分布式数据库在单台机器上面数据量较少,其响应速度明显提升。

提高系统整体可用性。避免了因为单台数据库的故障而造成全部瘫痪的后果。

易于扩展处理能力和系统规模。分布式数据库系统的结构可以很容易地扩展系统,在分布式数据库中增加一个新的节点,不影响现有系统的正常运行。这种方式比扩大集中式系统要灵活经济。在集中式系统中扩大系统和系统升级,由于有硬件不兼容和软件改变困难等缺点,升级的代价常常是昂贵和不可行的。

微信开源PhxSQL

PhxSQL 是一个兼容 MySQL、服务高可用、数据强一致的关系型数据库集群。

PhxSQL 以单 Master 多 Slave 方式部署,在集群内超过一半机器存活的情况下,可自身实现自动 Master 切换,且保证数据一致性。PhxSQL 基于 Percona 5.6 开发。Percona 是 MySQL 的一个分支,功能和实现与 MySQL 基本一致。

 

 

配置步骤

1) 主从复制时,只需把从slave01复制一下即可,变成从slave02。无需修改server-id,无需修改auto.cnf。

2) 修改配置文件

a)dbServer.xml

增加一个dbServer节点:

<dbServer name="slave02"  parent="abstractServer">
		<factoryConfig>
			<!-- mysql ip -->
			<property name="ipAddress">192.168.19.41</property>
		</factoryConfig>
	</dbServer>	

修改multiPool配置

注意:如果让master也负责读,就配置;如果master只负责写就从这里删除。

    b)amoeba.xml

如果只是一个从就直接写从的名称也可以

<property name="readPool">slave01</property>

如果要配置多个从,就必须写multiPool。引用dbServer.xml中配置的这个节点名称

<property name="readPool">multiPool</property>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值