大型项目主从数据库(ubuntu 16.0)

 

 

简单原理

主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE)操作,而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到其他从数据库。以SQL为例,主库负责写数据、读数据。读库仅负责读数据。每次有写库操作,同步更新到读库。写库就一个,读库可以有多个,采用日志同步的方式实现主库和多个读库的数据同步。即:

主服务器master记录数据库操作日志到Binary log,从服务器开启i/o线程将二进制日志记录的操作同步到relay log(存在从服务器的缓存中),另外sql线程将relay log日志记录的操作在从服务器执行。

准备

两台服务器,同时ubuntu 16.0

mysql通过apt-get安装,配置文件目录在/etc/mysql/mysql.conf.d/mysqld.cnf,ubuntu的mysql和centos7的mysql配置文件目录不同,这点要区分。

主数据库

主数据库我们叫他master

1.打开mysql配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,选用查找/log-bin跳到这行。

 

我们可以看到,第一行第二行和最后两行都被注释了,这里我们需要解开

server-id               = 1  //id,唯一
log-bin = /var/log/mysql/mysql-bin.log //二进制文件目录

这里我没有用到最后两个,这个看需求订,第三个是要同步的数据库,最后一个是要排除的数据库。

然后再用查找bind-address,注释掉(重点,必须注释掉,不然从数据库会连不上报2003错误)

重启服务

service mysql restart

2.添加一个用来登录主数据库的用户,权限和root一样,这里我用的是phpadmin,所以直接在界面添加了一个rel用户,密码123456.

在ubuntu登录数据库

mysql -uroot -p

安装同步插件(在进入数据库内执行)

install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_slave_enabled=ON;
flush privileges;

查看同步状态

show status like '%semi%';

查看主数据库状态

show master status;

记住这些状态值,我们需要告诉从数据库

从数据库

1.同样,我们还是要修改配置vim /etc/mysql/mysql.conf.d/mysqld.cnf

server-id               = 2 //一定不能和主一样,一定要唯一
log-bin = /var/log/mysql/mysql-bin.log

同样注释bind-address,然后重启

service mysql restart

2。进入数据库

 mysql -uroot -p

安装插件

install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_slave_enabled=ON;
flush privileges;

 查看状态

show status like '%semi%';

现在要把我们在主数据库创的用户和主数据库的状态告诉从数据库

change master to master_host='xx.xx.xx.xx', //主数据库的ip
master_user='rel', //创的用户
master_password='123456', //密码
master_log_file='mysql-bin.000011', //File 
master_log_pos= 2058; //Position

flush privileges;

开启从服务

start slave;

查看连接状态

show slave status\G

当红框中都是yes,证明主从服务设置成功。如果出现Slave_IO_Running: Connecting,有以下可能

1.从数据库或者主数据库端口错误

2.主数据库或者从数据库防火墙未关闭

3.端口未开放(云服务器端口限制)

现在我们去测试主从效果。先在主数据库添加一个test数据库

接着我们去从数据库刷新查看

同样,从数据库也有test数据库,证明主从成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值