美文网首页
mysql 主从同步和数据导入导出

mysql 主从同步和数据导入导出

作者: 小鱼嘻嘻 | 来源:发表于2020-08-19 15:22 被阅读0次
mysql 主从配置
  • mysql使用的是5.7的版本,先安装mysql
配置主从服务
  • 在master上分配slave权限给用户
GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO repluser@'172.26.131.99' IDENTIFIED BY 'replpass';

repluser 表示的为用户
172.26.131.99 表示的是从服务器
IDENTIFIED BY 'replpass'; 表示的是repluser对应的密码

  • 查看主服务状态
SHOW MASTER STATUS;
  • 操作从服务
change master to master_host='172.26.131.98', master_user='repluser',master_password='replpass',master_log_file='5306-mysql-bin.000002',master_log_pos=733;

master_log_file 就是刚才show master status 里面的binlong
master_log_pos 就是刚才show master status 里面的pos

  • 启动slave
 start slave;
  • 检查配置是否成功
show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

当上面两个都为yes的时候就表示成功了,目前我遇到的问题有:

2016-03-10T07:19:04.236362Z 6 [Warning] 
2016-03-10T07:19:04.236675Z 7 [Warning] Slave SQL for channel '': If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0

检查一下主从server_id是不是重复了,修改之后重启服务器就好了。

@@GLOBAL.GTID_PURGED was changed from '' to '43999aac-449b-11ea-864d-5254004b7586:1-2,

解决方案

reset master
mysql 跨环境数据同步

当我们在做压测或者数据迁移的时候,经常会有把整个库的数据从线上环境导入到线下环境,简单来说就是跨环境数据迁移。

  • 导出,dump出压缩包
mysqldump -uroot -ppassword abc >gzip > db_abc.sql.gzip
mysqldump -uroot -ppassword abc >db_abc.sql

第一种方式dump出的是一个压缩包,比第二个省空间

  • 使用scp跨环境传输,需要注意的是环境直接是可以互通的
scp root@ 172.26.130.3:/root/seal_item.sql.gz /root/

root@ 172.26.130.3 表示源地址
:/root/seal_item.sql.gz 表示对应的路径
/root/ 表示目标路径

  • 导入
mysql -uroot -ppassword abc <gzip </root/backup/abc.sql.gzip
mysql -uroot -ppassword abc < /root/backup/db_abc.sql

经验发现,压缩包的方式比较快

mysql 分配用户,授权等常用操作
  • 查看当前所有用户
SELECT * FROM mysql.user;
  • 创建用户
CREATE USER  'user_name'@'host'  IDENTIFIED BY  'password';

@host表示可以登录的机器,配置为localhost表示为当前机器可以登录,%表示远程登录
identified by 'password' 表示登录密码,可以不设置

  • 查看用户拥有的权限
show grants for 'exam'@'%';
  • 对用户进行授权
 grant all privileges on  databasename.tablename  TO  'username'@'%' ;

PRIVILEGES 表示要授予的权限,常用的有select,insert,update,如果要授予全部权利设置为all
databasename.tablename 表示要授予的库和表,如果要授予全部的库和表设置为.的通配符配置
'username'@'host' 表示要授予的用户

  • 撤销用户权限
revoke all on *.* from dba@localhost; 
  • 解决主从同步数据不一致问题
/usr/local/mysql/bin/mysql -uroot -P 3307 -S /usr/local/mysql/sock/mysql5306.sock -p

stop slave;
change master to  master_log_file='5306-mysql-bin.000087',master_log_pos=2009567;
start slave;

这种做法有点暴力,会导致从库丢数据。

相关文章

网友评论

      本文标题:mysql 主从同步和数据导入导出

      本文链接:https://www.haomeiwen.com/subject/tairjktx.html