您的当前位置:首页正文

MySQL主从复制指定不同库表同步参数说明

2023-11-10 来源:好兔宠物网

 

replication 中通过以下参数减少binlog数据量

master端:

--binlog-do-db 二进制日志记录的数据库(多数据库用逗号,隔开)

--binlog-ignore-db 二进制日志中忽略数据库 (多数据库用逗号,隔开)

以下是mysql主从忽略授权表的方法案例:

in master:

binlog-do-db=YYY 需要同步的数据库。不添加这行表示同步所有

binlog-ignore-db = mysql   这是不记录binlog,来达到从库不同步mysql库,以确保各自权限

binlog-ignore-db = performance_schema

binlog-ignore-db = information_schema 

slave端

--replication-do-db    设定需要复制的数据库(多数据库使用逗号,隔开)

--replication-ignore-db 设定需要忽略的复制数据库 (多数据库使用逗号,隔开)

--replication-do-table   设定需要复制的表

--replication-ignore-table 设定需要忽略的复制表 

--replication-wild-do-table 同replication-do-table功能一样,但是可以通配符

--replication-wild-ignore-table 同replication-ignore-table功能一样,但是可以加通配符

本文出自 “crazy_sir” 博客,请务必保留此出处http://douya.blog.51cto.com/6173221/1795342

MySQL主从复制指定不同库表同步参数说明

标签:ignore   do   忽略   mysql   

小编还为您整理了以下内容,可能对您也有帮助:

如何配置两个MySQL数据库之间的主从同步功能

一、 概述

MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。

二、 环境

操作系统:Linux 2.6.23.1-42.fc8 # SMP(不安装XEN)

Mysql版本:5.0.45-4.fc8

设备环境:PC(或者虚拟机)两台

三、 配置

数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是my.cnf):在本环境下为/etc/my.cnf。

3.1 设置环境:

IP的设置:

A主机 IP:10.10.0.119

Mask:255.255.0.0

B主机 IP:10.10.8.112

Mask:255.255.0.0

在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态。如果防火墙状态

为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。

最终以两台主机可以相互ping通为佳。

3.2 配置A主(master) B从(slave)模式

3.2.1 配置A 为master

、增加一个用户同步使用的帐号:

GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;

GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;

赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。

、增加一个数据库作为同步数据库:

create database test;

、创建一个表结构:

create table mytest (username varchar(20),password varchar(20));

、修改配置文件:

修改A的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:

server-id = 1 #Server标识

log-bin

binlog-do-db=test #指定需要日志的数据库

、重起数据库服务:

service mysqld restart

查看server-id:

show variable like ‘server_id’;

实例:

mysql> show variables like 'server_id';

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

| Variable_name | Value |

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

| server_id | 1 |

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

1 row in set (0.00 sec)

、用show master status/G命令看日志情况。

正常为:

mysql> show master status/G

*************************** 1. row ***************************

File: mysqld-bin.000002

Position: 198

Binlog_Do_DB: test,test

Binlog_Ignore_DB:

1 row in set (0.08 sec)

3.2.2 配置B 为slave

、增加一个数据库作为同步数据库:

create database test;

、创建一个表结构:

create table mytest (username varchar(20),password varchar(20));

、修改配置文件:

修改B的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:

server-id=2

master-host=10.10. 0.119

master-user=backup #同步用户帐号

master-password=1234

master-port=3306

master-connect-retry=60 #预设重试间隔秒

replicate-do-db=test #告诉slave只做backup数据库的更新

、重起数据库服务:

service mysqld restart

查看server-id:

show variables like ‘server_id’;

实例:

mysql> show variables like 'server_id';

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

| Variable_name | Value |

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

| server_id | 2 |

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

1 row in set (0.00 sec)

、用show slave status/G命令看日志情况。

正常为:

mysql> show slave status/G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.10.0.119

Master_User: backup

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysqld-bin.000001

Read_Master_Log_Pos: 98

Relay_Log_File: mysqld-relay-bin.000003

Relay_Log_Pos: 236

Relay_Master_Log_File: mysqld-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: test,test

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: 98

Relay_Log_Space: 236

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

1 row in set (0.01 sec)

3.2.3 验证配置

分别使用insert, delete , update在A主机进行增删改查数据库;查看B主机的数据库是否与A主机一致;若一致,则配置成功。

3.3双机互备模式

如果在A主机加入slave设置,在B主机加入master设置,则可以做B->A的同步。

、在A主机的配置文件中 mysqld配置项加入以下设置:

master-host=10.10.8.112

master-user=backup

master-password=1234

replicate-do-db=test

master-connect-retry=10

、在B的配置文件中 mysqld配置项加入以下设置:

log-bin

binlog-do-db=test

注意:当有错误产生时,*.err日志文件同步的线程退出,当纠正错误后,要让同步机制进行工作,运行slave start。

重起A、B机器,则可以实现双向的热备份。

四、 常见问题及解决

、Slave机器的权限问题,不但要给slave机器File权限,还要给它REPLICATION SLAVE的权限。

、在修改完Slave机器/etc/my.cnf之后,slave机器的mysql服务启动之前,记得要删除掉master.info

、在show master status或着show slave status不正常时,看看.err是怎样说的。

、Slave上Mysql的Replication工作有两个线程, I/O thread和SQL thread。I/O的作用是从

master 3306端口上把它的binlog取过来(master在被修改了任何内容之后,就会把修改了什么写到自己的binlog等待slave更

新),然后写到本地的relay-log,而SQL thread则是去读本地的relay-log,再把它转换成本Mysql所能理解的语句,于是同步

就这样一步一步的完成.决定I/O thread的是/var/lib/mysql/master.info,而决定SQL thread的是/var

/lib/mysql/relay-log.info.

、启动slave,命令用start slave;重新启动用restart slave

mysql 主从如何设置同步

mysql 主从同步设置

同步介绍 mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一个 Slave上。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。 要实现 MySQL 的 主从同步 ,首先必须打开 Master 端的BinaryLog(mysql-bin)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。打开 MySQL 的 Binary Log 可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的 mysqld 参数组([mysqld]标识后的参数部分)增加 “log-bin” 参数项。

Mysql主从服务器配置 主服务器IP:192.168.1.60 从服务IP:192.168.1.61 Linux:centOS Mysql版本:5.1.58 以下配置皆在此服务上进行配置

查看主库服务器的my.cnf配置文件,根据mysql安装包、版本不同,相关的路径和配置文件路径会大致不一样,不过大多情况下是一样的。该文件在 etc/目录下。Mysql服务也提供了对不同服务器配置使用不同的配置文件,要使用它们的时候,只需用它们任一一个替换上面的my.cnf文件即可。注:替换文件名必须为my.cnf。 cnf配置文件一般会有四个,可以根据命令 # ll /usr/share/mysql/*.cnf 查看; my-small.cnf内存少于或等于64M,只提供很少的的数据库服务; my-medium.cnf内存在32M--64M之间而且和其他服务一起使用,例如web; my-large.cnf内存有512M主要提供数据库服务; my-huge.cnf内存有1G到2G,主要提供数据库服务; my-innodb-heavy-4G.cnf内存有4G,主要提供较大负载数据库服务(一般服务器都使用这个); 可以根据服务器配置的不同选择不同的cnf配置文件。

配置my.cnf文件 采用系统默认的etc/my.cnf配置文件进行配置,对主服务器进行配置主要需要在配置文件中添加以下几项(在添加的时候要确保它们不在文件中存在,因为如选择上面几种不同的配置文件,配置里的内容会不一样,如果没有相应的项,需要添加)。 用vi etc/my.cnf打开文件,对文件进行修改,在[mysqld]下面进行添加修改: Server-id = 1 #这是数据库ID,此ID是唯一的,主库默认为1,其他从库以此ID进行递增,ID值不能重复,否则会同步出错; log-bin = mysql-bin 二进制日志文件,此项为必填项,否则不能同步数据; binlog-do-db = testcreate #需要同步的数据库,如果需要同步多个数据库; 则继续添加此项。 binlog-do-db = testcreate1 binlog-do-db = testcreate2 binlog-ignore-db = mysql不需要同步的数据库; 至此主服务器配置my.cnf配置完成,保存退出文件。 现在对Mysql服务器进行重启:#servicemysqld restart 如果重启失败,则证明配置文件错误,需重新检查。 建议:对my.cnf修改之前最好对其进行备份,以免配置文件修改失败不能及时重启服务器。

配置完成后需要建立同步用的数据库账户 主库需要提供一个账户让从库对起连接并同步,用命令mysql服务器 mysqlgrantreplication slave on *.* to ‘testcreate’@’192.168.1.61’ identified by ‘123456’; 说明:’testcreate’:同步的数据库; ‘192.168.1.61’:同步的数据库地址; ‘123456’ :同步的数据库密码,在从库配置时需要设置。

显示主库信息 mysqlshowmaster status; 执行上述命令显示: 看到上述信息则表示主库建立成功。

备份数据库(如果从服务器也为新建库,则不需要此操作) 备份数据库的方法有很多种:如果在同一局域网可以直接复制数据库,也可以用工具直接进行数据导入。 复制数据库用打包的方法: # cd/data 转到存放Mysql数据库的路径下 # tarcvfz testcreate.tar.gz db/ 再从数据库中进行复制解压 # cd/data # scp192.168.1.61:/data/testcreate.tar.gz #tarxvfz testcreate.tar.gz 数据复制完毕;

从库配置 从服务器的配置基本与主库配置差不多,选择的从库服务器为:192.168.1.61 1.配置从库服务my.cnf文件 # vietc/my.cnf 对其进行如下修改: Server-id = 2#这里ID改为2 因为主库为1; log-bin = mysql-bin 必填项,用于数据同步; master-host = 192.168.1.60主库IP; master-user = test同步用的账户; master-password = 123456同步账户密码,主库时的设置; master-port = 3306同步数据库的端口号。

重启从库服务器 #service mysqld restart 如果重启失败则配置文件有问题,需重新检查配置。

调整复制过来的数据库的权限(如果有从主库复制过来的数据库) 主库复制过来的数据库权限都为root权限,需要修改为mysql权限 #chown–R mysql:mysql /var/lib/mysql 如果从库是新建的库就不需要进行此步骤

显示从服务器状态 进行mysql服务器: mysqlshowslave status\G; 显示如图:

如果slave_io_running和slave_sql_running都为yes则表示从服务器配置成功。 如果遇到关于position相关的错误,就需要再手动设置以下File/Postion的信息 mysqlChangemaster to master_host = ‘192.168.1.60’ master_user= ‘test’ master_password=’123456’ master_log_file=’mysql-bin.000001’, 主库的文件信息 master_log_pos=’106’;主库的Position信息

mysql怎么实现主从复制

mysql主从复制的配置

1. 准备工作

有两台MySQL数据库服务器Master和slave,Master为主服务器,slave为从服务器。

初始状态时,Master和slave中的数据信息相同,当Master中的数据发生变化时,slave也跟着发生相应的变化,使得master和slave的数据信息同步,达到备份的目的。

要点:

负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志,这个日志记载着需要传输给从服务器的各种修改动作。

因此,主服务器必须激活二进制日志功能。从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限。

环境:

Master和slave的MySQL数据库版本同为5.6.28

操作系统:CentOS release 6.5 (Final)

IP地址:master:120.77.153.204 slave:120.77.148.74

2. master的配置

(1) 创建复制帐号

mysql> CREATE USER'masterslave'@'120.77.148.74' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.00 sec)

(2) 主从复制授权

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'masterslave'@'120.77.148.74' IDENTIFIED BY '123456';

(3) 拷贝数据

(假如是你完全新安装mysql主从服务器,这一步就不需要。因为新安装的master和slave有相同的数据)

关停Master服务器,将Master中的数据拷贝到B服务器中,使得Master和slave中的数据同步,并且确保在全部设置操作结束前,

禁止在Master和slave服务器中进行写操作,使得两数据库中的数据一定要相同!

3. 修改配置文件

对master进行配置,包括打开二进制日志,指定唯一的servr ID

[root@myserver ~]# find / -type f -name my.cnf/usr/my.cnf[root@myserver ~]# vim /usr/my.cnfserver_id=1log-bin=mysql-bin

4. 重启master,运行SHOW MASTER STATUS,输出如下:

[root@myserver ~]# service mysql stopShutting down MySQL.... SUCCESS! [root@myserver ~]# service mysql startStarting MySQL. SUCCESS! [root@myserver ~]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 3Server version: 5.6.28-log MySQL Community Server (GPL)Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.mysql> mysql> show master status; mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 | 120 | | | |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql>

配置slave

1. 修改my.cnf文件

[root@wenhaijin mysql-5.6.28]# find / -type f -name my.cnf/usr/my.cnf[root@wenhaijin mysql-5.6.28]# vim /usr/my.cnf log_bin = mysql-binserver_id = 2relay_log = mysql-relay-binlog_slave_updates = 1read_only = 1

server_id是必须的,而且唯一。

slave没有必要开启二进制日志,但是在一些情况下,必须设置。

例如,如果slave为其他slave的master,必须设置bin_log。

在这里,我们开启了二进制日志,而且显示了命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。

relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。

有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。

所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。

2. 启动slave

接下来就是让slave连接master,并开始重做master二进制日志中的事件。

你不应该用配置文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,而且它可以为slave指定不同的master,而不需要停止服务器。如下:

mysql> CHANGE MASTER TO MASTER_HOST='120.77.153.204', -> MASTER_USER='masterslave', -> MASTER_PASSWORD='123456', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=0;Query OK, 0 rows affected, 2 warnings (0.01 sec)

MASTER_LOG_POS的值为0,因为它是日志的开始位置。

你可以用SHOW SLAVE STATUS语句查看slave的设置是否正确:

mysql> SHOW SLAVE STATUSG*************************** 1. row *************************** Slave_IO_State: Master_Host: 120.77.153.204 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 4 Relay_Log_File: mysql-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: No Slave_SQL_Running: No 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: 4 Relay_Log_Space: 120 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: NULLMaster_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: 0 Master_UUID: Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 01 row in set (0.00 sec)

Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是No

表明slave还没有开始复制过程。日志的位置为4而不是0,这是因为0只是日志文件的开始位置,并不是日志位置。

实际上,MySQL知道的第一个事件的位置是4。

为了开始复制,你可以运行START SLAVE;

mysql> START SLAVE; mysql> SHOW SLAVE STATUSG;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 120.77.153.204 Master_User: masterslave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 1762 Relay_Log_File: mysql-relay-bin.000001 Relay_Log_Pos: 1925 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: 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: 1762 Relay_Log_Space: 2098 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: 0Master_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: 1 Master_UUID: 4df9a165-03fd-11e7-b234-00163e0243e8 Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 01 row in set (0.00 sec)

在这里主要是看:

Slave_IO_Running=Yes

Slave_SQL_Running=Yes

slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。

日志的位置增加了,意味着一些事件被获取并执行了。

如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。

你可通过show processlistG;查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接。

3. 授权masterslave用户远程登入,然后使用navicat远程连接

在master的test数据库中创建user表。

然后在slave中进行刷新发现user表已经同步过来。

刷新前:

刷新后:

在master的test库中user表添加一条数据。

然后打开slave中test库的user表,发现该数据也被同步过来了。

说明已经成功实现mysql的主从复制。

mysql怎么实现主从复制

mysql主从复制的配置

1. 准备工作

有两台MySQL数据库服务器Master和slave,Master为主服务器,slave为从服务器。

初始状态时,Master和slave中的数据信息相同,当Master中的数据发生变化时,slave也跟着发生相应的变化,使得master和slave的数据信息同步,达到备份的目的。

要点:

负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志,这个日志记载着需要传输给从服务器的各种修改动作。

因此,主服务器必须激活二进制日志功能。从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限。

环境:

Master和slave的MySQL数据库版本同为5.6.28

操作系统:CentOS release 6.5 (Final)

IP地址:master:120.77.153.204 slave:120.77.148.74

2. master的配置

(1) 创建复制帐号

mysql> CREATE USER'masterslave'@'120.77.148.74' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.00 sec)

(2) 主从复制授权

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'masterslave'@'120.77.148.74' IDENTIFIED BY '123456';

(3) 拷贝数据

(假如是你完全新安装mysql主从服务器,这一步就不需要。因为新安装的master和slave有相同的数据)

关停Master服务器,将Master中的数据拷贝到B服务器中,使得Master和slave中的数据同步,并且确保在全部设置操作结束前,

禁止在Master和slave服务器中进行写操作,使得两数据库中的数据一定要相同!

3. 修改配置文件

对master进行配置,包括打开二进制日志,指定唯一的servr ID

[root@myserver ~]# find / -type f -name my.cnf/usr/my.cnf[root@myserver ~]# vim /usr/my.cnfserver_id=1log-bin=mysql-bin

4. 重启master,运行SHOW MASTER STATUS,输出如下:

[root@myserver ~]# service mysql stopShutting down MySQL.... SUCCESS! [root@myserver ~]# service mysql startStarting MySQL. SUCCESS! [root@myserver ~]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 3Server version: 5.6.28-log MySQL Community Server (GPL)Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.mysql> mysql> show master status; mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 | 120 | | | |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql>

配置slave

1. 修改my.cnf文件

[root@wenhaijin mysql-5.6.28]# find / -type f -name my.cnf/usr/my.cnf[root@wenhaijin mysql-5.6.28]# vim /usr/my.cnf log_bin = mysql-binserver_id = 2relay_log = mysql-relay-binlog_slave_updates = 1read_only = 1

server_id是必须的,而且唯一。

slave没有必要开启二进制日志,但是在一些情况下,必须设置。

例如,如果slave为其他slave的master,必须设置bin_log。

在这里,我们开启了二进制日志,而且显示了命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。

relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。

有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。

所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。

2. 启动slave

接下来就是让slave连接master,并开始重做master二进制日志中的事件。

你不应该用配置文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,而且它可以为slave指定不同的master,而不需要停止服务器。如下:

mysql> CHANGE MASTER TO MASTER_HOST='120.77.153.204', -> MASTER_USER='masterslave', -> MASTER_PASSWORD='123456', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=0;Query OK, 0 rows affected, 2 warnings (0.01 sec)

MASTER_LOG_POS的值为0,因为它是日志的开始位置。

你可以用SHOW SLAVE STATUS语句查看slave的设置是否正确:

mysql> SHOW SLAVE STATUSG*************************** 1. row *************************** Slave_IO_State: Master_Host: 120.77.153.204 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 4 Relay_Log_File: mysql-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: No Slave_SQL_Running: No 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: 4 Relay_Log_Space: 120 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: NULLMaster_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: 0 Master_UUID: Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 01 row in set (0.00 sec)

Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是No

表明slave还没有开始复制过程。日志的位置为4而不是0,这是因为0只是日志文件的开始位置,并不是日志位置。

实际上,MySQL知道的第一个事件的位置是4。

为了开始复制,你可以运行START SLAVE;

mysql> START SLAVE; mysql> SHOW SLAVE STATUSG;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 120.77.153.204 Master_User: masterslave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 1762 Relay_Log_File: mysql-relay-bin.000001 Relay_Log_Pos: 1925 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: 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: 1762 Relay_Log_Space: 2098 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: 0Master_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: 1 Master_UUID: 4df9a165-03fd-11e7-b234-00163e0243e8 Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 01 row in set (0.00 sec)

在这里主要是看:

Slave_IO_Running=Yes

Slave_SQL_Running=Yes

slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。

日志的位置增加了,意味着一些事件被获取并执行了。

如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。

你可通过show processlistG;查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接。

3. 授权masterslave用户远程登入,然后使用navicat远程连接

在master的test数据库中创建user表。

然后在slave中进行刷新发现user表已经同步过来。

刷新前:

刷新后:

在master的test库中user表添加一条数据。

然后打开slave中test库的user表,发现该数据也被同步过来了。

说明已经成功实现mysql的主从复制。

如何配置两个MySQL数据库之间的主从同步功能

方法一:忽略错误后,继续同步

该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

解决:

stopslave;

#表示跳过一步错误,后面的数字可变

setglobalsql_slave_skip_counter=1;

startslave;

之后再用mysql>showslavestatusG查看:

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

ok,现在主从同步状态正常了。。。

方式二:重新做主从,完全同步

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

解决步骤如下:

1.先进入主库,进行锁表,防止数据写入

使用命令:

mysql>flushtableswithreadlock;

注意:该处是锁定为只读状态,语句不区分大小写

2.进行数据备份

#把数据备份到mysql.bak.sql文件

[root@server01mysql]#mysqlmp-uroot-p-hlocalhost>mysql.bak.sql

这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失

3.查看master状态

如何配置MySQL数据库主从复制

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那 时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。

  为什么使用主从复制?

  1、主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作为备份。

  2、通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。但是不要同时在主从服务器上进行更新,这样可能引起冲突。

  3、使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。

  MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让主服务器发送二进制日志。主服务器创建一个线程将二进制日志中的内容发送到从服务器。从服 务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,从服务器使用此线程读取中继日志并执行日 志中包含的更新。SHOW PROCESSLIST语句可以查询在主服务器上和从服务器上发生的关于复制的信息。

  默认中继日志使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是从服务器主机名,nnnnnn是序 列号。用连续序列号来创建连续中继日志文件,从000001开始。从服务器跟踪中继日志索引文件来识别目前正使用的中继日志。默认中继日志索引文件名为 host_name-relay-bin.index。在默认情况,这些文件在从服务器的数据目录中被创建。中继日志与二进制日志的格式相同,并且可以用 mysqlbinlog读取。当SQL线程执行完中继日志中的所有事件后,中继日志将会被自动删除。

  从服务器在数据目录中另外创建两个状态文件--master.info和relay-log.info。状态文件保存在硬盘上,从服务器关闭时不会丢失。下次从服务器启动时,读取这些文件以确定它已经从主服务器读取了多少二进制日志,以及处理自己的中继日志的程度。

  设置主从复制:

  1、确保在主服务器和从服务器上安装的MySQL版本相同,并且最好是MySQL的最新稳定版本。

  2、在主服务器上为复制设置一个连接账户。该账户必须授予REPLICATION SLAVE权限。如果账户仅用于复制(推荐这样做),则不需要再授予任何其它权限。

  mysql> GRANT REPLICATION SLAVE ON *.*

  -> TO 'replication'@'%.yourdomain.com' IDENTIFIED BY 'slavepass';

  3、执行FLUSH TABLES WITH READ LOCK语句清空所有表和块写入语句:

  mysql> FLUSH TABLES WITH READ LOCK;

  保持mysql客户端程序不要退出。开启另一个终端对主服务器数据目录做快照。

  shell> cd /usr/local/mysql/

  shell> tar -cvf /tmp/mysql-snapshot.tar ./data

  如果从服务器的用户账户与主服务器的不同,你可能不想复制mysql数据库。在这种情况下,应从归档中排除该数据库。你也不需要在归档中包括任何日志文件或者master.info或relay-log.info文件。

  当FLUSH TABLES WITH READ LOCK所置读锁定有效时(即mysql客户端程序不退出),读取主服务器上当前的二进制日志名和偏移量值:

  mysql > SHOW MASTER STATUS;

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

  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

  | mysql-bin.003 | 73 | test | manual,mysql |

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

  File列显示日志名,而Position显示偏移量。在该例子中,二进制日志值为mysql-bin.003,偏移量为73。记录该值。以后设置从服务器时需要使用这些值。它们表示复制坐标,从服务器应从该点开始从主服务器上进行新的更新。

  

  如果主服务器运行时没有启用--logs-bin,SHOW MASTER STATUS显示的日志名和位置值为空。在这种情况下,当以后指定从服务器的日志文件和位置时需要使用的值为空字符串('')和4.

  取得快照并记录日志名和偏移量后,回到前一中端重新启用写活动:

  mysql> UNLOCK TABLES;

  4、确保主服务器主机上my.cnf文件的[mysqld]部分包括一个log-bin选项。该部分还应有一个server-id=Master_id选项,其中master_id必须为1到232–1之间的一个正整数值。例如:

  [mysqld]

  log-bin

  server-id=1

  如果没有提供那些选项,应添加它们并重启服务器。

  5、停止从服务器上的mysqld服务并在其my.cnf文件中添加下面的行:

  [mysqld]

  server-id=2

  slave_id值同Master_id值一样,必须为1到232–1之间的一个正整数值。并且,从服务器的ID必须与主服务器的ID不相同。

  6、将数据备据目录中。确保对这些文件和目录的权限正确。服务器 MySQL运行的用户必须能够读写文件,如同在主服务器上一样。

  Shell> chown -R mysql:mysql /usr/local/mysql/data

  7、启动从服务器。在从服务器上执行下面的语句,用你的系统的实际值替换选项值:

  mysql> CHANGE MASTER TO

  -> MASTER_HOST='master_host_name',

  -> MASTER_USER='replication_user_name',

  -> MASTER_PASSWORD='replication_password',

  -> MASTER_LOG_FILE='recorded_log_file_name',

  -> MASTER_LOG_POS=recorded_log_position;

  8、启动从服务器线程:

  mysql> START SLAVE;

  执行这些程序后,从服务器应连接主服务器,并补充自从快照以来发生的任何更新。

  9、如果出现复制错误,从服务器的错误日志(HOSTNAME.err)中也会出现错误消息。

  10、从服务器复制时,会在其数据目录中发现文件master.info和HOSTNAME-relay-log.info。从服务器使用这两个文 件跟踪已经处理了多少主服务器的二进制日志。不要移除或编辑这些文件,除非你确切知你正在做什么并完全理解其意义。即使这样,最好是使用CHANGE MASTER TO语句。

如何配置MySQL数据库主从复制

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那 时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。

  为什么使用主从复制?

  1、主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作为备份。

  2、通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。但是不要同时在主从服务器上进行更新,这样可能引起冲突。

  3、使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。

  MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让主服务器发送二进制日志。主服务器创建一个线程将二进制日志中的内容发送到从服务器。从服 务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,从服务器使用此线程读取中继日志并执行日 志中包含的更新。SHOW PROCESSLIST语句可以查询在主服务器上和从服务器上发生的关于复制的信息。

  默认中继日志使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是从服务器主机名,nnnnnn是序 列号。用连续序列号来创建连续中继日志文件,从000001开始。从服务器跟踪中继日志索引文件来识别目前正使用的中继日志。默认中继日志索引文件名为 host_name-relay-bin.index。在默认情况,这些文件在从服务器的数据目录中被创建。中继日志与二进制日志的格式相同,并且可以用 mysqlbinlog读取。当SQL线程执行完中继日志中的所有事件后,中继日志将会被自动删除。

  从服务器在数据目录中另外创建两个状态文件--master.info和relay-log.info。状态文件保存在硬盘上,从服务器关闭时不会丢失。下次从服务器启动时,读取这些文件以确定它已经从主服务器读取了多少二进制日志,以及处理自己的中继日志的程度。

  设置主从复制:

  1、确保在主服务器和从服务器上安装的MySQL版本相同,并且最好是MySQL的最新稳定版本。

  2、在主服务器上为复制设置一个连接账户。该账户必须授予REPLICATION SLAVE权限。如果账户仅用于复制(推荐这样做),则不需要再授予任何其它权限。

  mysql> GRANT REPLICATION SLAVE ON *.*

  -> TO 'replication'@'%.yourdomain.com' IDENTIFIED BY 'slavepass';

  3、执行FLUSH TABLES WITH READ LOCK语句清空所有表和块写入语句:

  mysql> FLUSH TABLES WITH READ LOCK;

  保持mysql客户端程序不要退出。开启另一个终端对主服务器数据目录做快照。

  shell> cd /usr/local/mysql/

  shell> tar -cvf /tmp/mysql-snapshot.tar ./data

  如果从服务器的用户账户与主服务器的不同,你可能不想复制mysql数据库。在这种情况下,应从归档中排除该数据库。你也不需要在归档中包括任何日志文件或者master.info或relay-log.info文件。

  当FLUSH TABLES WITH READ LOCK所置读锁定有效时(即mysql客户端程序不退出),读取主服务器上当前的二进制日志名和偏移量值:

  mysql > SHOW MASTER STATUS;

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

  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

  | mysql-bin.003 | 73 | test | manual,mysql |

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

  File列显示日志名,而Position显示偏移量。在该例子中,二进制日志值为mysql-bin.003,偏移量为73。记录该值。以后设置从服务器时需要使用这些值。它们表示复制坐标,从服务器应从该点开始从主服务器上进行新的更新。

  

  如果主服务器运行时没有启用--logs-bin,SHOW MASTER STATUS显示的日志名和位置值为空。在这种情况下,当以后指定从服务器的日志文件和位置时需要使用的值为空字符串('')和4.

  取得快照并记录日志名和偏移量后,回到前一中端重新启用写活动:

  mysql> UNLOCK TABLES;

  4、确保主服务器主机上my.cnf文件的[mysqld]部分包括一个log-bin选项。该部分还应有一个server-id=Master_id选项,其中master_id必须为1到232–1之间的一个正整数值。例如:

  [mysqld]

  log-bin

  server-id=1

  如果没有提供那些选项,应添加它们并重启服务器。

  5、停止从服务器上的mysqld服务并在其my.cnf文件中添加下面的行:

  [mysqld]

  server-id=2

  slave_id值同Master_id值一样,必须为1到232–1之间的一个正整数值。并且,从服务器的ID必须与主服务器的ID不相同。

  6、将数据备据目录中。确保对这些文件和目录的权限正确。服务器 MySQL运行的用户必须能够读写文件,如同在主服务器上一样。

  Shell> chown -R mysql:mysql /usr/local/mysql/data

  7、启动从服务器。在从服务器上执行下面的语句,用你的系统的实际值替换选项值:

  mysql> CHANGE MASTER TO

  -> MASTER_HOST='master_host_name',

  -> MASTER_USER='replication_user_name',

  -> MASTER_PASSWORD='replication_password',

  -> MASTER_LOG_FILE='recorded_log_file_name',

  -> MASTER_LOG_POS=recorded_log_position;

  8、启动从服务器线程:

  mysql> START SLAVE;

  执行这些程序后,从服务器应连接主服务器,并补充自从快照以来发生的任何更新。

  9、如果出现复制错误,从服务器的错误日志(HOSTNAME.err)中也会出现错误消息。

  10、从服务器复制时,会在其数据目录中发现文件master.info和HOSTNAME-relay-log.info。从服务器使用这两个文 件跟踪已经处理了多少主服务器的二进制日志。不要移除或编辑这些文件,除非你确切知你正在做什么并完全理解其意义。即使这样,最好是使用CHANGE MASTER TO语句。

如何配置两个MySQL数据库之间的主从同步功能?

    IP的设置:A主机 IP:10.10.0.119;Mask:255.255.0.0;B主机 IP:10.10.8.112;Mask:255.255.0.0

    在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态。如果防火墙状态。

    为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。最终以两台主机可以相互ping通为佳。

    3.2 配置A主(master) B从(slave)模式;3.2.1 配置A 为master。

    增加一个用户同步使用的帐号:

    GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;

    GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’。

    赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。

    增加一个数据库作为同步数据库:create database test;

    创建一个表结构:create table mytest (username varchar(20),password varchar(20));

    修改配置文件:修改A的/etc/my.cnf文件。

在my.cnf配置项中加入下面配置:

server-id = 1 #Server标识

log-bin

binlog-do-db=test #指定需要日志的数据库

重起数据库服务:

service mysqld restart

查看server-id:

show variable like ‘server_id’。

Mysql主从复制详解

最近接的项目,帮人维护mysql服务器,临时来了个需求,帮忙搭一个主从复制,用于备机和备份使用,弄了半天,终于弄好了,但是觉得很多东西还是都忘记的差不多了,所以这里也记录一下。下次忘记了,不用在网上搜了。 主从复制目的: 主从服务器设置的稳健性得以提升,如果主服务器发生故障,可以把本来作为备份的从服务器提升为新的主服务器。 在主从服务器上分开处理用户的请求,读的话,可以直接读取备机数据,可获得更短的响应时间。 用从服务器做数据备份而不会占用主服务器的系统资源。 场景描述 主服务器:IP地址192.168.56.128,mysql已经安装,无用户数据。 从服务器:IP地址192.168.56.129,mysql已经安装。 主服务器的mysql服务已经正常启动。 主从复制配置 主服务器上进行操作 (1)创建用户并授权 1  mysql -uroot -p密码 2  mysqlgrant replication slave on *.* to rep1@192.168.56.129 identified by'mysql'; 3  mysqlflush privileges; (2)查询主数据库的状态 1  mysql show master status; 记下File以及Position的值,在后面进行从服务器操作的时候需要使用。 配置从服务器 (1)修改从服务器的配置文件/etc/my.cnf 使得“server-id=2”,并确定这个id没有被别的mysql服务所使用。 (2)启动mysql服务 1  mysqld_safe --user=mysql (3)mysql登录并执行同步的sql语句,最后并启动slave 1  #mysql -uroot -p 2  mysql change master to master_host='192.168.56.128',master_user='rep1',master_password='mysql',master_log_file='mysql-bin.000004',master_log_pos=477; 3  mysql start slave; 就启动了slave同步功能。 (5)主从同步检查 执行如下语句 1  mysqlshow slave status\G 来检查从服务器的同步情况,一个正常的输出结果应该如下面的形式: Slave_IO进程以及slave_SQL进程都必须正常运行,在状态输出中表现为:“slave”;否则都是不正确的状态(如一个值是Yes,另一个是No则不行)。 如果主数据库服务器已经存在用户数据,那么在进行主从复制时,需要做以下处理。 (1)主数据库锁表操作,不让数据再进行写入动作。 1  mysqlflush tableswithread lock; (2)查看主数据库的状态 1  mysqlshow master status; 记下File以及Position的值,以备从服务器使用。 (3)把主服务器的数据文件复制到从服务器,最好先用tar归档压缩处理一下 (4)取消主数据库锁定 1  mysqlunlock tables; 从服务器的操作和前面的步骤一样,略过。 实验一 在主数据库服务器上创建库和表,然后插入记录,再登录到从服务器,查看是否也建立相一致的库和表以及记录。 (1)主服务器上的操作 1  mysqlcreate database first_tb; ①在主数据库服务器创建库first_tb; 1  mysqlcreate table first_db(idint(3)),name char (10)); ②在主数据库服务器创建表first_tb; 1  mysqlinsert into first_tb values (001,'myself'); ③在主数据服务器的表first_tb中插入记录; (2)从服务器上查看 1  mysqlshow databases; ①数据库first_db自动生成 ②表first_tb也自动生成,数据记也录存在。 实验二 导入数据库,在主库上查看现在的数据库 创建数据库buy并且导入数据 在从库上查看,数据库已经完全导入。