当前位置:Gxlcms > 数据库问题 > mysql主从复制

mysql主从复制

时间:2021-07-01 10:21:17 帮助过:9人阅读

技术分享

2.主从同步的条件:

①server-id不同

②主库开启bin-log日志,从库开不开不影响

③主库建立同步的账号

④锁表,查看binlog文件以及位置点

⑤新开窗口导出全备份

⑥主库解锁,开放用户写入

从库:

①从库操作,把主库的全备份导入从库

②找位置点,配置master.info

③开启从库开关

3.环境说明:三个数据库服务器部署在一台服务器上的多实例

[root@oldboy scripts]# netstat -lntup|grep 330

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      26656/mysqld       

tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      21801/mysqld       

tcp        0      0 0.0.0.0:3308                0.0.0.0:*                   LISTEN      11749/mysqld       

[root@oldboy scripts]#

4.登录数据库并授权用户(binlog日志检查是否开启/data/3306/my.cnf)

[root@oldboy ~]# mysql  -uroot -poldboy123 -S  /data/3306/mysql.sock

mysql> grant replication slave  on *.*  to rep@‘172.16.1.%‘  identified  by ‘oldboy123‘;

mysql> flush  privileges;


5.锁表查看binlog日志的位置

mysql> flush  table  with read lock;  #锁表的时候不能退出

mysql> show  master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000020 |     6162 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

mysql>

6.全量备份数据库(切记要新开一个ssh窗口,锁表不可以退出)

[root@oldboy ~]# mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock   -A -B -R --events --master-data=2|gzip >/server/backup/rep_bak_$(date +%F).sql.gz

[root@oldboy ~]# ll /server/backup/rep_bak_$(date +%F).sql.gz                             

 -rw-r--r-- 1 root root 152180 6  23 17:32 /server/backup/rep_bak_2016-06-23.sql.gz

[root@oldboy ~]#


7.主库解锁,开发用户写入

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

mysql>


8.从库导入主库的全备份数据

[root@oldboy ~]# cd  /server/backup/

[root@oldboy backup]# gzip -cd rep_bak_2016-06-23.sql.gz>rep_bak_2016-06-23.sql

[root@oldboy backup]# mysql -uroot -poldboy123 -S  /data/3307/mysql.sock <rep_bak_2016-06-23.sql

9.找位置点,配置master.info

mysql -uroot -poldboy123 -S  /data/3307/mysql.sock

CHANGE MASTER TO

MASTER_HOST=‘172.16.1.52‘,

MASTER_PORT=3306,

MASTER_USER=‘rep‘,

MASTER_PASSWORD=‘oldboy123‘,

MASTER_LOG_FILE=‘mysql-bin.000020‘,

MASTER_LOG_POS=6162;

[root@oldboy data]# cat /data/3307/data/master.info   #检查

10.开启从库开关

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql>


11.从库检查状态,是否正常

mysql> show  slave status  \G

Slave_IO_Running: Yes       #出现这两个表示正常

Slave_SQL_Running: Yes    #出现这两个表示正常读取多个文件并追加到一个文件

Seconds_Behind_Master: 0     #没有延迟



11.错误整理:

show  slave  status \G ;出现如下错误,

一般情况下 对于error错误就这么办


解决办法 

stop  slave ;

set  GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

start  salve;


12.如果是想重新change  master

如果是想重新 change  master

步骤  

       ①stop slave

       ②reset  slave  all

       ③change  master

       ④start  slave


13.快速部署主从复制

授权要在主服务器上做:

①直接锁表备份数据

mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock  -x -A -B -R --events --master-data=2|gzip >/server/backup/rep_bak_$(date +%F).sql.gz

②解压全量备份数据

gzip -cd rep_bak_2016-06-25.sql.gz>rep_bak_2016-06-25.sql

③找出binlog日志的位置点

vim  rep_bak_2016-06-25.sql

CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000021‘, MASTER_LOG_POS=396;

④恢复全备份数

mysql -uroot  -poldboy123  -S /data/3307/mysql.sock < rep_bak_2016-06-25.sql

⑤登录数据库

mysql -uroot  -poldboy123  -S /data/3307/mysql.sock

⑥第一次change  master

CHANGE MASTER TO

MASTER_HOST=‘172.16.1.52‘,

MASTER_PORT=3306,

MASTER_USER=‘rep‘,

MASTER_PASSWORD=‘oldboy123‘;

⑦第二次change  master #在全备份中取出

CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000021‘, MASTER_LOG_POS=396;

⑧开启slave

start  slave

14数据库的线程介绍

技术分享

技术分享

15主从不同步解决思路

从库:
mysql> create database testskip;
主库:
mysql> create database testskip;
从库:
mysql> show slave status  \G
              Last_SQL_Error: Error ‘Can‘t create database ‘testskip‘; database exists‘ on query. Default database: ‘testskip‘. Query: ‘create database testskip‘
 Replicate_Ignore_Server_Ids:
            Master_Server_Id: 1
1 row in set (0.00 sec)
处理:
从库:
mysql> set global sql_slave_skip_counter=1;
mysql> show slave status  \G  #故障解决


本文出自 “小小三郎的博客” 博客,请务必保留此出处http://wsxxsl.blog.51cto.com/9085838/1792814

mysql主从复制

标签:服务器   mysql   数据库   影响   开关   

人气教程排行