您的位置:首页 > 数据库 > MySQL

17.1 MySQL主从介绍17.2 准备工作17.3 配置主17.4 配置从17.5 测试主从同步

2018-09-03 17:57 1001 查看
17.1 MySQL主从介绍1. MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的2. MySQL主从是基于binlog的,主上须开启binlog才能进行主从。3. 主从过程大致有3个步骤1)主将更改操作记录到binlog里2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里3)从根据relaylog里面的sql语句按顺序执行4. 主上有一个log dump线程,用来和从的I/O线程传递binlog5. 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地MySQL主从原理图 :


1.在两个centos系统上安装mysql,安装方法见 :11.3 MySQL安装(上);11.4 MySQL安装(中);11.5 MySQL安装下2.查看第一台和第二台服务器mysql是否启动。

[root@aminglinux-128 ~]# ps aux |grep mysql
root       1088  0.0  0.0 115432   288 ?        S    9月01   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/aminglinux-128.pid
mysql      1303  0.0 31.8 1313108 317424 ?      Sl   9月01   1:22 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=aminglinux-128.err --pid-file=/data/mysql/aminglinux-128.pid --socket=/tmp/mysql.sock --port=3306
root      24929  0.0  0.0 112720   984 pts/2    R+   16:26   0:00 grep --color=auto mysql
[root@localhost ~]# ps aux |grep mysql
root      12891  0.0  0.1  11812  1612 pts/0    S    16:28   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysqld.pid
mysql     13071 60.5 17.5 1119428 175124 pts/0  Sl   16:28   0:10 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=localhost.localdomain.err --pid-file=/data/mysql/mysqld.pid --socket=/tmp/mysql.sock --port=3306
root      13129  0.0  0.0 112720   980 pts/0    S+   16:28   0:00 grep --color=auto mysql
3.在第一台服务器上进行设置。

[root@aminglinux-128 ~]#  vim /etc/my.cnf



2. 重启mysql :
[root@aminglinux-128 ~]# /etc/init.d/mysqld restart
Shutting down MySQL....................... SUCCESS!
Starting MySQL................. SUCCESS!
3. 查看/data/mysql/目录下,生成以(log_bin)haozc开头的文件 :
[root@aminglinux-128 ~]# ls /data/mysql/aminglinux.*
/data/mysql/aminglinux.000001  /data/mysql/aminglinux.index
4. 进入 /data/mysql/目录 :
[root@aminglinux-128 ~]# cd /data/mysql/
[root@aminglinux-128 mysql]#
[root@aminglinux-128 mysql]#
5. 创建一个新的库,库名为aminglinux :
[root@aminglinux-128 mysql]# mysql -uroot -phaomima -e "create database aminglinux"
Warning: Using a password on the command line interface can be insecure.
把ceshiku库备份并恢复成aminglinux库,作为测试数据

6. 备份mysql数据库,做测试 :
[root@aminglinux-128 mysql]#  mysqldump -uroot -phaomima ceshiku > /tmp/ceshiku.sql
Warning: Using a password on the command line interface can be insecure.
7. 把备份的ceshiku.sql库文件,恢复到aminglinux库 :

[root@aminglinux-128 mysql]# mysql -uroot -phaomima aminglinux < /tmp/ceshiku.sql
8. hao1机器主 所有mysql数据库备份到/tmp/下 :

[root@aminglinux-128 mysql]# ls
aminglinux         aminglinux-128.err  aminglinux.index  ceshiku  ibdata1      ib_logfile1  mysql2              test
aminglinux.000001  aminglinux-128.pid  auto.cnf          db1      ib_logfile0  mysql        performance_schema



[root@aminglinux-128 mysql]# mysqldump -uroot -phaomima aminglinux > /tmp/haozc.sql
Warning: Using a password on the command line interface can be insecure.
[root@aminglinux-128 mysql]# mysqldump -uroot -phaomima mysql2 > /tmp/mysql2.sql
Warning: Using a password on the command line interface can be insecure.
[root@aminglinux-128 mysql]# mysqldump -uroot -phaomima db1 > /tmp/db1.sql
Warning: Using a password on the command line interface can be insecure.
[root@aminglinux-128 mysql]# mysqldump -uroot -phaomima ceshiku > /tmp/ceshiku.sql
Warning: Using a password on the command line interface can be insecure.
9. 进入mysql(root用户下):
[root@aminglinux-128 mysql]# mysql -uroot -phaomima
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
10. 创建repl用户,针对ip是aminglinux2从ip :

mysql> grant replication slave on *.* to 'repl'@'192.168.193.129' identified by 'haomima';
Query OK, 0 rows affected (0.36 sec)
11. 表状态锁上,暂时不能再写入数据 :

mysql>  flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
12. 查看红框中两个数值,hao2机器从上需要用这两个数值 :

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| aminglinux.000001 |      444 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
17.4 配置从1. 编辑/etc/my.cnf配置文件 :添加server-id=129
[root@localhost ~]# vim /etc/my.cnf

[client]
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
port                            = 3306
socket                          = /tmp/mysql.sock
server-id=129
basedir                              = /usr/local/mysql
datadir                              = /data/mysql
pid-file                             = /data/mysql/mysqld.pid
server-id                                                       = 306
character-set-server                 = utf8
2. 重启mysql :

[root@localhost ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
3. 用scp命令复制aminglinux-128主/tmp/下所有以.sql备份的mysql数据库文件,粘贴到本机amingliux-129从的/tmp/目录下 :

[root@localhost ~]# scp 192.168.193.128:/tmp/*.sql /tmp/
The authenticity of host '192.168.193.128 (192.168.193.128)' can't be established.
ECDSA key fingerprint is SHA256:/pKbINKTISanvNQ+5fJAqgFOnBJ7wbI68LKeFPZcVA0.
ECDSA key fingerprint is MD5:06:1f:8f:91:36:47:28:0c:72:08:6b:9f:28:b0:49:19.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.193.128' (ECDSA) to the list of known hosts.
root@192.168.193.128's password:
ceshiku.sql                                                                                           100% 1807   879.9KB/s   00:00
db1.sql                                                                                               100% 1258   890.6KB/s   00:00
haozc.sql                                                                                             100% 1265   856.6KB/s   00:00
mysql2.sql                                                                                            100% 1261   773.6KB/s   00:00
mysql.sql                                                                                             100%  646KB  10.0MB/s   00:00
user.sql
4. 如果执行找不到mysql -uroot命令,执行下面命令 :[root@aminglinux-129 ~]# alias 'mysql=/usr/local/mysql/bin/mysql'[root@aminglinux-129 ~]# alias 'mysqldump=/usr/local/mysql/bin/mysqldump'[root@aminglinux-129~]# ln -s /usr/local/mysql/bin/mysql /usr/bin
5. 登录mysql(登录root用户) :
mysql -uroot -phaomima
6. hao2从上创建和hao1主一样的mysql用户haozc :
mysql>  create database haozc;
Query OK, 1 row affected (0.00 sec)

mysql> create database mysql2;
ERROR 1007 (HY000): Can't create database 'mysql2'; database exists
mysql> create database mysql2;
ERROR 1007 (HY000): Can't create database 'mysql2'; database exists
mysql> create database ceshiku;
ERROR 1007 (HY000): Can't create database 'ceshiku'; database exists
mysql>  create database zrlog;
Query OK, 1 row affected (0.00 sec)
7. 把aminglinux-128机器从 同步的.sql 库文件,恢复到创建对应名称库下 :

mysql> mysql -uroot zrlog < /tmp/zrlog.sql
不往下运行
8. 登录mysql,执行下面命令 :
mysql>  change master to master_host='192.168.193.128',master_user='repl', master_password='haomima', master_log_file='aminglinux.000001'', master_log_pos=444;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
mysql> stop slave
-> start slave
mysql> show slave status\G



10. 在aminglinux-128机器主上,把之前锁定的表解锁(恢复写入的操作) :
[root@aminglinux-128 ~]# mysql -uroot -phaomima
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.39-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

17.5 测试主从同步配置参数1. 主服务器上 :binlog-do-db= //仅同步指定的库(其他库不同步)binlog-ignore-db= //忽略指定库(其他库都同步)2. 从服务器上 :replicate_do_db= //(不常用)replicate_ignore_db= //(不常用)replicate_do_table= //(不常用)replicate_ignore_table= //(不常用)replicate_wild_do_table= //如aming.%, (支持通配符%)replicate_wild_ignore_table=测试主从:1. aminglinux-128机器主上操作 :mysql -uroot -phaomima切换数据库 :
mysql> use aminglinux
Database changed
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql主从介绍