博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
阅读量:5926 次
发布时间:2019-06-19

本文共 5517 字,大约阅读时间需要 18 分钟。

一、MySQL主从介绍

MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql主从应用场景:
1、数据备份,如果主库机器出现宕机,可以切换到从库机器为web提供服务
2、也是数据备份,但是从库机器可以为web服务提供读数据的功能,但是不能写数据,来减轻主库机器的压力
二、准备工作
准备两台机器,一个作为主库服务器,一个作为从库服务器
首先要在两台机器上分别安装mysql,具体安装步骤可参考之前笔记链接:
大致安装步骤可分为:
1、下载.tar.gz包
wget
2、解压tar.gz包
tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
3、挪动目录并改名
mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
4、初始化,需要事先添加mysql用户和创建data目录
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
初始化之后要检查下初始化是否成功,初始化成功的标志是两个OK或者执行完命令输入#echo $?
5、修改配置文件
vi /etc/my.cnf
定义datadir和socket路径
6、拷贝启动脚本到/etc/init.d/目录下并重命名为mysqld
cp support-files/mysql.server /etc/init.d/mysqld
7、编辑/etc/init.d/mysqld文件,定义basedir和datadir路径
vim /etc/init.d/mysqld
8、启动mysql
/etc/init.d/mysqld start
Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/linux-01.pid). //启动报错
排查问题思路:
查看错误日志
#tail /data/mysql/linux-01.err
06-28 21:34:28 2726 [Note] Shutting down plugin 'CSV'
06-28 21:34:28 2726 [Note] Shutting down plugin 'MRG_MYISAM'
06-28 21:34:28 2726 [Note] Shutting down plugin 'MEMORY'
06-28 21:34:28 2726 [Note] Shutting down plugin 'MyISAM'
06-28 21:34:28 2726 [Note] Shutting down plugin 'sha256_password'
06-28 21:34:28 2726 [Note] Shutting down plugin 'mysql_old_password'
06-28 21:34:28 2726 [Note] Shutting down plugin 'mysql_native_password'
06-28 21:34:28 2726 [Note] Shutting down plugin 'binlog'
06-28 21:34:28 2726 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
#less /data/mysql/linux-01.err
看到错误信息有如下提示:
Can't find file: './mysql/plugin.frm' (errno: 13 - Permission denied)
#ls -l /data/mysql/ //查看到/data/mysql/文件的属主属组属于root
解决方法:修改/data/mysql/文件的属主属组为mysql:mysql
#chown -R mysql:mysql /data/mysql/
#/etc/init.d/mysqld start //再次启动就启动成功了
Starting MySQL......... SUCCESS!
#chkconfig mysqld on //设置开机启动mysqld服务
把两台机器的mysql服务都启来
接下来需要配置主从的配置文件
三、配置主
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#vim /etc/my.cnf //修改my.cnf,增加如下内容
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#/etc/init.d/mysqld restart //重启mysql
#cd /data/mysql/
#ls -lt
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
aminglinux1.index 是前缀文件,是它的索引,aminglinux1.000001 是二进制日志文件,这两个文件是实现主从的根本
#mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql //备份zrlog数据库
#mysql -uroot -p123456 -e "create database aming" //创建一个新库,aming库
#mysql -uroot -p123456 aming < /tmp/zrlog.sql //把备份的zrlog数据库恢复到aming库
#ls -lt //参考的主从就是aming这个库了,log_bin里面完整的记录了数据库的过程,log_bin在my.cnf中定义的就是aminglinux1,所以log_bin就是aminglinux1.000001
#mysql -uroot -p123456
mysql> grant replication slave on . to 'repl'@'192.168.238.130' identified by '123456';
/创建主从同步数据的用户,只需要replication slave 权限,.表示所有的库所有的表,对repl用户,针对从库的IP地址
mysql> flush tables with read lock; //锁下表,目的是不让它再写了,数据先暂停,状态先保持在这里,这样从库同步数据的时候,两者保持一致,这样才能实现同步
mysql> show master status; //需要记住如下红框中的File和Position
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql> quit
#ls -l //备份如下几个数据库,
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#mysqldump -uroot -p123456 log > /tmp/log.sql //备份log库
#mysqldump -uroot -p123456 logs > /tmp/logs.sql //备份logs库
#mysqldump -uroot -p123456 test > /tmp/test.sql //备份test库
#ls /tmp/sql //查看/tmp/目录下的.sql文件
/tmp/log.sql /tmp/logs.sql /tmp/test.sql /tmp/zrlog.sql
四、配置从
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#ps aux |grep mysql //查看mysql服务有没有起来
#vim /etc/my.cnf //配置从库服务器,添加server-id=130,从库服务器IP:192.168.238.130,从库配置文件不需要配置log_bin=""这个参数,只有主库服务器才需要二进制日志文件
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
#/etc/init.d/mysqld restart //重启mysql
#scp 192.168.238.128:/tmp/
.sql /tmp/ //复制主库/tmp/*.sql下所有的.sql文件到本机的/tmp/目录下
log.sql 100% 1257 304.8KB/s 00:00
logs.sql 100% 1258 458.8KB/s 00:00
test.sql 100% 1258 353.4KB/s 00:00
zrlog.sql 100% 10KB 353.0KB/s 00:00
#mysql -uroot //提示命令未找到
bash: mysql: command not found
#alias 'mysql=/usr/local/mysql/bin/mysql' //做别名
#alias 'mysqldump=/usr/local/mysql/bin/mysqldump'
#mysql -uroot //做完别名就可以使用这个命令了
mysql> create database aming; //创建几个库
mysql> create database log;
mysql> create database logs;
mysql> create database zrlog;
mysql> quit
#mysql -uroot log < /tmp/log.sql //恢复log数据库
#mysql -uroot logs < /tmp/logs.sql //恢复logs数据库
#mysql -uroot zrlog < /tmp/zrlog.sql //恢复zrlog数据库
#mysql -uroot aming < /tmp/zrlog.sql //把备份的zrlog数据库恢复到aming库,保持两边数据一致
#ls /data/mysql/ //查看mysql目录下数据库是否和主库的mysql目录下数据库一致
#mysql -uroot
mysql> stop slave;
mysql> change master to master_host='192.168.238.128', master_user='repl', master_password='123456', master_log_file='aminglinux1.000002', master_log_pos=10922;
//解释:这一行命令是配置主从同步的核心,master_host='192.168.238.128'这个IP是主库服务器IP;也可以指定port=3306,默认是3306可以省略;master_user='repl'用户是repl;master_password='123456'密码是123456;
master_log_file='aminglinux1.000002',这里的master_log_file填写的就是在主库里面mysql> show master status;出来的方框里面的File;master_log_pos=10922这里的这个数值也是在主库里面mysql> show master status;出来的方框里面的Position方框里面的数值。
mysql> start slave;
mysql> show slave status\G //查看主从有没有配置成功,主要看有没有下图的两个Yes
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
以上是从库配置完成没有问题
需要在主库上开启写的权限,具体操作如下:
[root@linux-01 ~]# mysql -uroot -p123456
mysql> unlock tables; //开启主库写的权限
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
五、测试主从同步
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
以后做忽略某个库的时候使用replicate_wild_do_table= 和 replicate_wild_ignore_table= 这两个配置参数,尽量不要使用replicate_do_da= 、replicate_ignore_db= 、 replicate_do_table= 、 replicate_ignore_table= 这四个配置参数
主库上操作:
[root@linux-01 ~]# mysql -uroot -p123456
mysql> use aming;
mysql> show tables;
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql> select count() user;
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql> drop database aming; //删除aming库,可以在从库上验证有没有删除aming库
查看从库里面的:
[root@linux-02 ~]# mysql -uroot
mysql> use aming;
mysql> select count(
) user;
MySQL主从介绍 准备工作 配置主  配置从 测试主从同步
mysql > show databases; //可以看到aming库已经删除
问题:如果遇到在从库上误删除库或者表,mysql> show slave status\G 查看状态应该是有一个NO
解决方法:
首先保持主从两边是数据库是一直的,在主库上查看mysql> show master status;两个数值,在从库
mysql> stop slave;
mysql> change master to master_host='192.168.238.128', master_user='repl', master_password='123456', master_log_file='aminglinux1.000002', master_log_pos=10922;
mysql> start slave;
mysql> show slave status\G //再次查看状态就是两个Yes了

转载于:https://blog.51cto.com/13669226/2133991

你可能感兴趣的文章
Android TimeAnimator
查看>>
Angularjs调用公共方法与共享数据
查看>>
python3随记——字符编码
查看>>
1.安装
查看>>
css sprite讲解与使用实例
查看>>
java 类的加载、连接和初始化
查看>>
Python高级特性——迭代(Iteration)
查看>>
动态轮播图
查看>>
洛谷P4364 [九省联考2018]IIIDX(线段树)
查看>>
NOI2019省选模拟赛 第三场
查看>>
mailing list的原理
查看>>
适配器模式和装饰模式
查看>>
python exception的传递
查看>>
[SDOI2009]Bill的挑战——全网唯一 一篇容斥题解
查看>>
Python logging模块详解
查看>>
linux 3
查看>>
技术成长的困扰
查看>>
java如何进行字符串拼接?
查看>>
python之新式类与经典类
查看>>
最大连续子数组和与JUnit测试
查看>>