一,安装数据库
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;
浙公网安备 33010602011771号