mysql主从机构的主数据库不可能出现,2019-03-21 mysql主从数据库的配置及常见故障排除-Go语言中文社区...

【0】主从数据库操作的注意事项

1.从数据库只能做查询操作,禁止在从数据库上做 create、detele、update、insert等写入操作。

【1】前提条件

1.服务器mysql已经安装

192.168.106.174 mysql(主)

192.168.106.178 mysql(从)

【2】修改mysql(主)上的vim /etc/my.cnf文件,在[mysqld]下添加如下参数:

#每个server服务的标识,在master/slave环境中,此变量一定要不一样。

server-id=1

#此参数表示在事务提交时,处理重做日志的方式;此变量有三个可选值0,1,2:

#0:当事务提交时,并不将事务的重做日志写入日志文件,而是等待每秒刷新一次。

#1:当事务提交时,将重做日志缓存的内容同步写到磁盘日志文件,为了保证数据一致性,在replication环境中使用此值。

#2:当事务提交时,将重做日志缓存的内容异步写到磁盘日志文件(写到文件系统缓存中)。

innodb_flush_log_at_trx_commit=0

#1.控制master的是否开启binlog记录功能;

#2.二进制文件最好放在单独的目录下,这不但方便优化、更方便维护。

#3.重新命名二进制日志很简单,只需要修改[mysqld]里的log_bin选项。

log_bin=master-bin

#通过此来实现master自动删除binlog

expire_logs_days=14

【3】修改mysql(从)上的vim /etc/my.cnf文件,在[mysqld]下添加如下参数:

#每个server服务的标识,在master/slave环境中,此变量一定要不一样。

server-id=2

#此参数表示在事务提交时,处理重做日志的方式;此变量有三个可选值0,1,2:

#0:当事务提交时,并不将事务的重做日志写入日志文件,而是等待每秒刷新一次。

#1:当事务提交时,将重做日志缓存的内容同步写到磁盘日志文件,为了保证数据一致性,在replication环境中使用此值。

#2:当事务提交时,将重做日志缓存的内容异步写到磁盘日志文件(写到文件系统缓存中)。

innodb_flush_log_at_trx_commit=0

#1.控制master的是否开启binlog记录功能;

#2.二进制文件最好放在单独的目录下,这不但方便优化、更方便维护。

#3.重新命名二进制日志很简单,只需要修改[mysqld]里的log_bin选项,

log_bin=slaver-bin

#从库做为其他从库的主库时 log-slave-updates参数是必须要添加的,因为从库要作为其他从库的主库,必须添加该参数。从库开启log-bin参数,

#如果直接往从库写数据,是可以记录log-bin日志的,但是从库通过I0线程读取主库二进制日志文件,然后通过SQL线程写入的数据,是不会记录binlog日志的。

#也就是说从库从主库上复制的数据,是不写入从库的binlog日志的。所以从库做为其他从库的主库时需要在配置文件中添加log-slave-updates参数。

log-slave-updates

#主从复制时忽略的库,如果指定复制的库则使用replicate-do-db参数。

replicate_ignore_db=mysql

#通过此来实现master自动删除binlog

expire_logs_days=14

【4】

重启174 、178mysql数据库

【5】把174mysql(主)设置成主库,操作如下

使用Xshell或CRT软件连接174服务器,执行以下命令

#使用用户root和密码123456登陆mysql

mysql -uroot -p123456

#主服务器(174)上创建授权账户,允许从服务器(178)主机上连接

mysql> grant replication slave on*.*to'rep'@'192.168.106.178'identified by'123456';

#查看主库的当前binlog状态信息

mysql> show master status;

#退出mysql

mysql> quit;

【6】把178mysql(从)设置成主库,操作如下

使用Xshell或CRT软件连接178服务器,执行以下命令

#使用用户root和密码123456登陆mysql

mysql –uroot -p123456

--mysql -h 192.168.106.178 -uroot -p123456

#将主服务器(174)设为自己的主服务器,其中master_log_file和master_log_pos参数是根据show master status命令查出的主库当前binlog状态信息。

mysql> change master to master_host='192.168.106.174',master_user='rep',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=123;

#开启slave功能

mysql> start slave;

#查看从库的状态信息

mysql> show slave statusG

#退出mysql

mysql> quit;

【7】主从mysql的测试

1.在mysql(主)上创建测试库和测试表

#使用用户root和密码123456登陆mysql

mysql –uroot -p123456

#创建test_db1数据库

mysql> create database test_db1;

#选择test_db1数据库

mysql> use test_db1;

#在test_db1库下创建tab1表

mysql> create table test_table1(id int,name varchar(30));

#在tab1表中插入数据

mysql> insert into test_db1.test_table1(id,name) values(1,'zhangsan');

#提交

mysql> commit;

2.在mysql(从)上进行验证

#使用用户root和密码123456登陆mysql

mysql -uroot -p123456

#查询tab1表中的数据

mysql> select * from test_db1.test_table1

【8】常见故障排除

1.mysql(从)数据不同步,且Slave_SQL_Running: NO。

#使用用户root和密码123456登陆mysql

mysql -uroot -p123456

#查看从库的状态信息,主要关注Slave_IO_Running,Slave_SQL_Running,Last_SQL_Error等信息。

mysql> show slave statusG;

#停止slave

mysql> stop slave;

#设置跳过slave上sql的数量

mysql> set global sql_slave_skip_counter =1;

#启动slave

mysql> start slave;

#查看从库的状态信息,主要关注Slave_IO_Running参数是YES,Slave_SQL_Running参数是YES,Last_SQL_Error参数没有错误信息,则说明主从同步正常。

mysql> show slave statusG;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值