一,安装数据库

yum install -y mysql*

yum install -y mariadb-server.x86_64 mariadb.x86_64

二、配置数据库

1.设置数据库密码

mysqladmin -uroot password

2.两台机器创建相同的数据库data,新建用户master,给权限

我使用的是192.168.1.78(A)和192.168.1.77(B)

create database data;

create table info(nu char(8),name char(8),age int);

A:grant replication slave,file on *.* to 'master'@'192.168.1.77' identified by '123456';

B:grant replication slave,file on *.* to 'master'@'192.168.1.78' identified by '123456';

flush privileges;

3.编辑主配置文件my.cnf

A;

log-bin = mysql-bin      #启动二进制日志系统 /var/lib/mysql/mysql-bin.log   确保此文件可写
server-id = 1                #用于标识不同的数据库服务器,另一台为2
binlog-do-db = data       #需同步的数据库名(二进制),多个写多行
binlog-ignore-db = mysql    #避免同步的数据库名(二进制),多个写多行
replicate-do-db = data     #同步的数据库名,多个写多行
replicate-ignore-db = mysql  #避免同步的数据库名,多个写多行
log-slave-updates      #该从库是否写入二进制日志,如果需要成为多主则可启用。只读可以不需要
slave-skip-errors = all     #跳过主从复制出现的错误
sync_binlog = 1       
auto_increment_increment=2   #该服务器自增列增量
auto_increment_offset=1         #该服务器自增列的初始值,另一台为2

##sync_binlog

这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于“sync_binlog”参数的各种设置的说明如下:

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。

B:

log-bin=mysql-bin
server-id=2
binlog-do-db=data
binlog-ignore-db=mysql
replicate-do-db=data
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2

4.重新启动数据库

/etc/init.d/mysqld restart

从库重启两次,使binlog主从主从日志命名不同

flush tables with read lock;  #先锁定表格防止两端数据改动

show master status\G;       #查看主服务器同步状态

查看主服务器 

5.创建具有复制权限的用户

A:CHANGE MASTER TO MASTER_HOST='192.168.1.77',MASTER_USER='master',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=106;

B:CHANGE MASTER TO MASTER_HOST='192.168.1.78',MASTER_USER='master',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=106;

 flush privileges;

 

6.两台服务器都启动slave模式

start slave;

show slave status\G;  

看到这两个参数都为yes,证明成功

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 

三、测试是否搭建成功

A:insert into info(nu,name,age) values('001','yolanda','18');

查看B服务器是否新增数据

mysql> select * from info;
+------+---------+------+
| nu | name | age |
+------+---------+------+
| 001 | yolanda | 18 |
+------+---------+------+

有结果则为成功

 

四、删除主从配置

1.关闭从服务器设置

stop alave;

reset slave;

2.重置master主库

reset master;

3.删除用户