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

Mysql主从同步搭建

2020-06-07 06:13 357 查看

Mysql主从同步

主从原理:
   从库生成两个线程,一个I/O线程,一个SQL线程;
   i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
   主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
   SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致

环境:主从服务器时间要进行同步
主库:192.168.87.30
从库:192.168.87.13

下载二进制包使用二进制安装mysql
[root@mysql ~]# wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.56-linux-glibc2.5-x86_64.tar.gz
[root@mysql ~]# tar xf mysql-5.5.56-linux-glibc2.5-x86_64.tar.gz

[root@mysql ~]# useradd mysql
[root@mysql ~]# mkdir /app/
[root@mysql ~]# mv mysql-5.5.56-linux-glibc2.5-x86_64 /app
[root@mysql ~]# ln -s /app/mysql-5.5.56-linux-glibc2.5-x86_64/ /app/mysql
[root@mysql mysql]# /app/mysql/scripts/mysql_install_db --basedir=/app/mysql/ --datadir=/app/mysql/data/ --user=mysql
[root@mysql mysql]#cp /app/mysql/support-files/my-small.cnf /etc/my.cnf
[root@mysql mysql]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@mysql mysql]# sed -i ‘s#/usr/local/mysql#/app/mysql#g’ /app/mysql/bin/mysqld_safe
[root@mysql mysql]# sed -i ‘s#/usr/local/mysql#/app/mysql#g’ /etc/init.d/mysqld
[root@mysql mysql]# echo “PATH=$PATH:/app/mysql/bin” >> /etc/profile
[root@mysql mysql]# . /etc/profile
[root@mysql mysql]# chmod +x /etc/init.d/mysqld
[root@mysql mysql]# chown -R mysql.mysql /app/mysql/
[root@mysql mysql]# service mysqld start
[root@mysql mysql]# chkconfig mysqld on
主服务器更改配置文件/etc/my.cnf
从服务器做同样的修改id要变化,这里设置的是ip的最后一段

[root@mysql mysql]# egrep -Ev “#|^$” /etc/my.cnf

[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
user = mysql
basedir = /app/mysql
datadir = /app/mysql/data/
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
server-id = 30 服务器id
log-bin=mysql-bin 打开此选项
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
[mysqlhotcopy]
interactive-timeout

主库:
登录mysql:
mysql> GRANT REPLICATION SLAVE ON . to ‘mysync’@’%’ identified by ‘123’;授权mysync

mysql> show master status; 查询master的状态
±-----------------±---------±-------------±-----------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
±-----------------±---------±-------------±-----------------+
| mysql-bin.000004 | 107| | |
±-----------------±---------±-------------±-----------------+
1 row in set (0.00 sec)

从库:

mysql> change master to master_host=‘192.168.87.30’,master_user=‘mysync’,master_password=‘123’, master_log_file=‘mysql-bin.000004’,master_log_pos=107; 建立同步连接
Query OK, 0 rows affected (0.01 sec)

mysql> start slave; 开启slave进程
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G 查看slave同步信息
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.87.30
Master_User: mysync
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 473
Relay_Log_File: fy-relay-bin.000002
Relay_Log_Pos: 619
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes 这里必须为yes
Slave_SQL_Running: Yes 同上
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 473
Relay_Log_Space: 772
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0 没有报错信息说明成功建立了连接
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 30
1 row in set (0.00 sec)

测试:
主库:
mysql> create database db; 创建db库
Query OK, 1 row affected (0.02 sec)

mysql> use db; 使用db库
Database changed
mysql> create table tb(id int(3),name char(10)); 创建表
Query OK, 0 rows affected (0.15 sec)
mysql> insert into tb values(001,‘xzn’); 插入信息
Query OK, 1 row affected (0.07 sec)
mysql> show databases; 查看库信息
±-------------------+
| Database |
±-------------------+
| information_schema |
| db |
| mysql |
| performance_schema |
±-------------------+
4 rows in set (0.00 sec)
从库:
mysql> show databases; 查看库
±-------------------+
| Database |
±-------------------+
| information_schema |
| db |
| mysql |
| performance_schema |
±-------------------+
4 rows in set (0.00 sec)
mysql> use db
Database changed
mysql> select * from tb; 查询新增加的信息
±-----±-----+
| id | name |
±-----±-----+
| 1 | xzn |
±-----±-----+
1 row in set (0.00 sec)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: