mysql之主从配置实现
来源:互联网 发布:提花制版软件 编辑:程序博客网 时间:2024/05/16 15:03
我使用的是两台centos7虚拟机来做实验的,主服务器ip为192.168.2.128,从服务器ip为192.168.2.130
安装mysql就不用说了吧,不对,我们需要安装的是mariadb,命令行安装yum install mariadb mariadb-server -y就可以了
主,从服务器安装好mariabd后,开启mysql服务,修改密码(应该是这条命令mysql_secure_installtion),修改好密码后进入mysql,命令mysql -uroot -p 你的密码
在主服务器上进行下列操作
1 mysql>create user repl; //创建新用户
2 //repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。
3
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.2.%' IDENTIFIED BY 'mysql';
修改my.cnf,我的电脑上这个文件在/etc/my.cnf
在[mysqld]下面增加下面几行代码
1 server-id=1 //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
2 log-bin=master-bin
保存退出并重启MySQL服务
查看日志
mysql> SHOW MASTER STATUS;
+——————-+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————-+———-+————–+——————+
| master-bin.000001 | 1285 | | |
+——————-+———-+————–+——————+
1 row in set (0.00 sec)
显示上面的内容说明配置正确了
再进入mysql,执行 SHOW MASTER STATUS;
然后记录File | Position下面的那两个值了,在从服务器配置时我们需要用到
从服务器配置如下
也是修改my.cnf,在[mysqld]下面增加如下内容
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
重启mysql服务器
进入mysql,执行下面的命令
change master to master_host='192.168.2.128', //Master 服务器Ipmaster_port=3306,master_user='repl',master_password='mysql',master_log_file='master-bin.000001',//Master服务器产生的日志,这个值和下面的数字是File | Position对应的值,填写完之后在主服务器执行一下SHOW MASTER STATUS;确保这两个值是正确对应的master_log_pos=1285;
然后start slave;
我报的第一个错误是
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
上面这个错误是因为我master_log_file=’master-bin.000001’这里填错了,没有对应master服务器,master_log_pos的值不对应也会报错
我因为配置了很多次主从都没有成功,一直报上面那个错误,所以可以使用stop slave;然后reset slave;重置slave配置,接着在执行那条change master命令,最后执行start slave;就不会报错了
千辛万苦总算没有报错了,可是在从服务器上
mysql >show slave status \G;
不是显示
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
而是显示
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
这表示我们还没有配置正确
后来我试了试远程用reql用户登录主服务器myql,发现无法登录,后来上网查了查资料,发现原来是防火墙阻止了,那么让我们简单粗暴的解决问题吧,systmctl stop firewalld
我配置成功的效果代码
MariaDB [(none)]> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.2.128 Master_User: kali Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000003 Read_Master_Log_Pos: 245 Relay_Log_File: slave-relay-bin.000005 Relay_Log_Pos: 530 Relay_Master_Log_File: master-bin.000003 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 245 Relay_Log_Space: 1109 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 11 row in set (0.00 sec)
补充:后来再次实验遇到过一个很郁闷的问题就是一直显示Slave_IO_Running: Connecting
后来我发现创建用户时,我是这么创建的
grant all privileges on test.* to bp@’192.168.245.140’ identified by ‘123456’;
注意到有什么不一样的地方不。其实语句本身没有错误,但是用在这里却不行,会导致从库出错,从库必须对全部的数据库据都有全部权限,而我这里只授权了test里面的表权限,坑人啊
- mysql之主从配置实现
- Mysql实现主从配置
- Mysql 主从架构之-主从配置
- MySQL主从复制配置实现
- mysql 主从之简单配置
- mysql配置之主从复制
- MySQL配置之主从复制
- mysql数据库主从配置详解以及主从实现原理分析
- Mysql主从配置实现读写分离
- mysql 配置主从,实现读写分离
- MySQL主从复制配置与实现
- Mysql主从配置,实现读写分离
- Mysql主从配置,实现读写分离
- Mysql主从配置,实现读写分离
- mysql主从配置,实现实时备份数据
- Mysql主从配置,实现读写分离
- MySQL主从配置,实现数据备份。
- Mysql主从配置,实现读写分离
- AES加密解密 SHA1、SHA加密 MD5加密
- PHP删除文件及文件夹
- iOS 系统分享
- 《科技之巅》序 ——科技引爆未来
- Linux Command Line and....ch7(理解Linux文件权限)
- mysql之主从配置实现
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(十)
- 比特币改进提议(BIP)
- Struts2 中的值栈的理解
- Uncaught SyntaxError: Unexpected token
- 快速幂,矩阵快速幂原理介绍
- ie8及其以下版本兼容性问题之响应式
- [RK3288][Android6.0] WiFi的dts配置说明(AP6335)
- Varjo要实现人眼级别分辨率,宣称秒杀市面上所有头显