场景1
如果主节点已经运行了一段时间,且有大量数据时,如何配置并启动slave节点
通过备份恢复数据至从服务器
· 复制起始位置为备份时,二进制日志文件及其POS:
Mater 设置
1) 修改配置文件
2) 备份出数据库,会自动刷新日志,查看bin 日志
[root@mysql-master ~]# mysqldump -A -F --single-transaction --master-data=1 > /root/all.sql
MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| mariadb-bin.000001 | 2200 |
| mariadb-bin.000002 | 245 |
+--------------------+-----------+
2 rows in set (0.00 sec)
3) 备份完成之后 随便创建点东西 或者空数据库
Slave 设置
1) 导入 Master 备份的数据
[root@mysql-node1 ~]# mysql < /root/all.sql
2) 链接数据库(因为导出的数据库里面已经有了,要指定的log,在此就不需要指定)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='172.16.0.40',MASTER_USER='alave',MASTER_PASSWORD='123456';
MariaDB [(none)]> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
MariaDB [(none)]> show slave status\G
从服务器添加只读属性
1、限制从服务器为只读
在从服务器上设置readonly=ON
注意:此限制对拥有SUPER权限的用户均无效
阻止所有用户,包括主服务器复制的更新
mysql> FLUSH TABLES WITH READ LOCK;
1) 查看是否开启
MariaDB [(none)]> show variables like 'read%';
+----------------------+--------+
| Variable_name | Value |
+----------------------+--------+
| read_buffer_size | 131072 |
| read_only | OFF |
| read_rnd_buffer_size | 262144 |
+----------------------+--------+
2) 修改配置文件开启read_only
3) 查看是否开启
MariaDB [(none)]> show variables like 'read%';
+----------------------+--------+
| Variable_name | Value |
+----------------------+--------+
| read_buffer_size | 131072 |
| read_only | ON |
| read_rnd_buffer_size | 262144 |
+----------------------+--------+
级联复制
如果要启用级联复制,需要在从服务器启用以下配置
[mysqld]
log_slave_updates
实验:
Mastr 配置和之前一样不变,导出数据库.等(注: 同步之前查看log ops)
中间从服务器,导入sql,并且启动,进行同步,配置文件需要先加入以下信息
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
innodb_file_per_table
server_id=2
read-only
log_slave_updates
log_bin
Csalve配置
1) 配置文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=3
read-only
2) 链接(用户名可以Master 同步过去的用户,服务器地址填中间从服务器)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='172.16.0.41',MASTER_USER='vvve',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=517706;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show slave status\G