没有合适的资源?快使用搜索试试~ 我知道了~
mysql5.5源码主从复制搭建(同一台机器双实例3306和3307)
需积分: 5 0 下载量 47 浏览量
2023-07-07
20:40:55
上传
评论
收藏 37KB DOCX 举报
温馨提示
试读
24页
mysql5.5源码主从复制搭建(同一台机器双实例3306和3307)
资源推荐
资源详情
资源评论
mysql5.5 源码主从复制搭建(以同一台机器的双实例 3306 和 3307 为例)
项目 1 配置 mysql 服务器的主从结构 (开始时主从数据不一致时候需要找到临界点的主从同步,主库初始是单库时)
1.3306 实例配置成主,3307 实例配置成从
[root@localhost ~]# /data/3306/mysql start
Starting MySQL...
[root@localhost ~]# /data/3307/mysql start
Starting MySQL...
[root@localhost ~]# netstat -anptu |grep 330
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 26349/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 27066/mysqld
2.3306 实例上操作:(主)
1)主库上建立一些数据,模拟生产环境有数据
[root@localhost ~]# mysql -uroot -p123 -S /data/3306/mysql.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
mysql> create database ku;
mysql> use ku;
mysql> create table biao (id int(2),name varchar(8));
mysql> insert into biao values (1,'shi1');
mysql> insert into biao values (2,'shi2');
mysql> insert into biao values (3,'shi3');
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ku |
| mysql |
| performance_schema |
| test |
+--------------------+
mysql> select * from ku.biao;
+------+------+
| id | name |
+------+------+
| 1 | shi1 |
| 2 | shi2 |
| 3 | shi3 |
+------+------+
mysql> quit
2)开启 binlog 日志
[root@localhost ~]# vim /data/3306/my.cnf
[mysqld]
……
log-bin = /data/3306/mysql-bin #开启 binlog 日志,在 mysqld 模块下
server-id = 1 #主从的 server-id 不能一样,在 mysqld 模块下
wq
[root@localhost ~]# ls /data/3306
data my.cnf mysql mysqld.pid mysql_oldboy3306.err mysql.sock
[root@localhost ~]# mysql -uroot -p123 -S /data/3306/mysql.sock -e "show variables like 'log_bin'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
[root@localhost ~]# /data/3306/mysql stop
[root@localhost ~]# /data/3306/mysql start
[root@localhost ~]# ls /data/3306
data my.cnf mysql mysql-bin.000001 mysql-bin.index mysqld.pid mysql_oldboy3306.err mysql.sock
[root@localhost ~]# mysql -uroot -p123 -S /data/3306/mysql.sock -e "show variables like 'log_bin'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
3)授权一个用户,允许从库用此用户连接主库,然后锁表,查看 binlog 日志名称和位置点,准备全量备份(全量备份
所有的数据库时候,另开一个窗口,该窗口不能断)
[root@localhost ~]# mysql -uroot -p123 -S /data/3306/mysql.sock
mysql> grant replication slave on *.* to 'rep'@'192.168.37.%' identified by '123';
mysql> flush privileges;
mysql> flush table with read lock; #锁表,此时不提供服务,重开窗口做备份,也可不锁,备份时指定参数-x 锁表备份
mysql> show master status; #查看位置点,也可不 show,直接在备份时加参数--master-data=2 找位置点
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 331 | | |
+------------------+----------+--------------+------------------+
此窗口不断,备份完成后,再将锁住的表解锁,因为主库要提供服务。见下面
此窗口如果关闭,则锁表失效,还有这两参数超时也失效:interactive_timeout = 60 wait_timeout = 60
注意:mysql5.5 和 5.1 锁表命令不一样:5.5 是:flush table with read lock;而 5.1 是:flush tables with read lock;
4)主库上另开一个窗口,做全备份数据库(主从同步全备时不需刷新 binlog,文件多杂乱,也不需要)
[root@localhost ~]# mysqldump -uroot -p123 -S /data/3306/mysql.sock -A -B --events --master-data=1/2 >
/opt/rep.sql
#注意,上面操作的锁表和查看位置点也可不做,在备份时加参数-x 锁表,加参数--master-data=1/2 查看位置点也可实现。如果加参数--master-data=1/2,那么就会自动帮
你找位置点,从库 change master 时候,可以省略 master_log_file 和 master_log_pos 这两项,这两项可以不加,1:没注释,2:注释了,但 1 或 2 都行,尽量用 1 吧。
[root@localhost ~]# less /opt/rep.sql grep MASTER_LOG_POS 或 more,确认查看的位置点,注意:中间没有管道
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=331; 2 是有注释,也能用,尽量用 1 吧
5)主库刚才锁表和查看位置点的窗口,查看位置点没变化(证明备份时已锁住表,正常),备份完后,然后解锁
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 331 | | |
+------------------+----------+--------------+------------------+
mysql> unlock tables; #表解锁,这时数据库就能提供服务了,不用担心从库追不上主库,只要位置点找对就没事
mysql> quit #表解锁了,就可以退出该窗口也可以了
6)主库上再增加点数据,模拟全备数据库后还有增量的数据
[root@localhost ~]# mysql -uroot -p123 -S /data/3306/mysql.sock
mysql> insert into ku.biao values (4,'shi4');
mysql> insert into ku.biao values (5,'shi5');
mysql> select * from ku.biao;
+------+------+
| id | name |
+------+------+
| 1 | shi1 |
| 2 | shi2 |
| 3 | shi3 |
| 4 | shi4 |
| 5 | shi5 |
+------+------+
mysql> quit
3.3307 实例上操作:(从)
1)配置 server-id,和主的不能一样,log-bin 可根据情况开或不开,此处不开
[root@localhost ~]# vim /data/3307/my.cnf
#log-bin = /data/3307/mysql-bin #根据需要开关,此处不做级联,暂不开,如果做级联,不仅开且还有加参数
server-id = 2 #和主的不能一样
wq
[root@localhost ~]# /data/3307/mysql stop
[root@localhost ~]# /data/3307/mysql start
2)将主库的备份恢复到从库里(全量备份的数据先补齐)
[root@localhost ~]# mysql -uroot -p456 -S /data/3307/mysql.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
mysql> quit
[root@localhost ~]# mysql -uroot -p456 -S /data/3307/mysql.sock < /opt/rep.sql
#备份导入后,root 密码也同步过来了,3307 实例 root 密码变成 123,即使暂时还能用原来的 456 登录,也是暂时没有
刷新的原因,也不是长久之计,为了长久之计,最好开始两个实例的 root 密码就设置成一样,或者在此处暂时还能用
原来密码登录的情况下,flush privileges 刷新后,用同步过来的 123 密码进行登录。此处刷新(未显示操作,提示下)
[root@localhost ~]# mysql -uroot -p123 -S /data/3307/mysql.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ku |
| mysql |
| performance_schema |
| test |
+--------------------+
mysql> select * from ku.biao;
+------+------+
| id | name |
+------+------+
| 1 | shi1 |
| 2 | shi2 |
| 3 | shi3 |
+------+------+
mysql> quit
3)连接主库,从找到的 binlog 日志位置点往下恢复增量的数据(找到位置点,打开同步开关)
[root@localhost ~]# mysql -uroot -p123 -S /data/3307/mysql.sock
mysql> change master to master_host='192.168.37.128', #主库 IP,也是自己这台机器的 IP
-> master_port=3306, #主库端口
-> master_user='rep', #主库授权用户名
-> master_password='123', #主库的授权用户名的密码
-> master_log_file='mysql-bin.000001', #主库的 binlog 日志文件名
-> master_log_pos=331; #主库的 binlog 日志位置点
mysql> start slave; #开启增量同步数据的开关
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ku |
| mysql |
| performance_schema |
| test |
+--------------------+
mysql> select * from ku.biao; #查看全备的数据和后来主库增量的数据(都补齐了)
+------+------+
剩余23页未读,继续阅读
资源评论
运维实战帮
- 粉丝: 78
- 资源: 419
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功