对前面工具mysqlserverinfo, mysqlserverclone, mysqldbexport, mysqldbimport 的实际应用,在工作中,为了诊断问题,新增新功能,测试服务器数据也需要做出相应的更改,这就需要线上数据的副本,来确保解决方案适用于实际的服务器。在这种场景下,使用MySQL主从复制当然也是可行的。
创建一个新的实例,与线上的服务完全一样的选项和数据。
实例
在开始之前,要弄清楚当前运行的实例的配置参数。可以使用mysqlserverinfo 工具来发现配置文件和my_print_defaults 工具来打印出默认的配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
shell> mysqlserverinfo —server=root:root@trustauth.cn \
—format=vertical —show–servers
#
# The following MySQL servers are active on this host:
# Process id: 2377, Data path: /usr/local/mysql/data
# Process id: 2478, Data path: /Volumes/Source/source/temp_13001
# Process id: 2487, Data path: /Volumes/Source/source/temp_13002
#
# Source on trustauth.cn: … connected.
************************* 1. row *************************
server: trustauth.cn:3306
version: 5.1.50–log
datadir: /usr/local/mysql/data/
basedir: /usr/local/mysql–5.1.50–osx10.6–x86_64/
plugin_dir: /usr/local/mysql–5.1.50–osx10.6–x86_64/lib/plugin
config_file: /etc/my.cnf
binary_log: my_log.000287
binary_log_pos: 106
relay_log: None
relay_log_pos: None
1 row.
#…done.
shell> my_print_defaults mysqld /etc/my.cnf
—port=3306
—basedir=/usr/local/mysql
—datadir=/usr/local/mysql/data
—server_id=5
—log–bin=my_log
—general_log
—slow_query_log
—innodb_data_file_path=ibdata1:778M;ibdata2:50M:autoextend
shell> ps –f 2377
UID PID PPID C STIME TTY TIME CMD
74 2377 2300 0 10:56AM ?? 0:02.04 /usr/local/mysql/bin/mysqld —basedir=/usr/local/mysql \
—datadir=/usr/local/mysql/data —user=mysql \
—log–error=/logs/me.local.err —pid–file=/logs/me.local.pid \
—port=3306
|
如此,我们就知晓了当前运行的实例的配置选项和参数。接下来可以使用mysqlserverclone 工具来克隆一个完全一样的实例,–mysqld选项需要指定下面的参数:
- –log-bin=my_log
- –general_log
- –slow_query_log
- –user=mysql
- –log-error=<path>
并选择新的数据目录,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
shell> mysqlserverclone —server=root:root@trustauth.cn \
—new–data=/source/temp_clone —new–port=3307 —root=root —delete \
—new–id=123 —mysqld=“–log-bin=my_log –general-log –slow-query-log \
–user=mysql –log-error=/source/temp_clone”
# Cloning the MySQL server running on trustauth.cn.
# Creating new data directory…
# Configuring new instance…
# Locating mysql tools…
# Setting up empty database and mysql tables…
# Starting new instance of the server…
# Testing connection to new instance…
# Success!
# Setting the root password…
# Connection Information:
# -uroot -proot –socket=/source/temp_clone/mysql.sock
#…done.
|
接下来,就是导入数据了
1
2
3
4
5
|
shell> mysqldbexport —server=root:root@trustauth.cn:3306 —export=both —all > data.sql
shell> mysqldbimport —server=root:root@trustauth.cn:3307 —import=both data.sql
# Source on trustauth.cn: … connected.
# Importing definitions and data from data.sql.
#…done.
|
如果要复制所有的用户及其权限,需要使用mysqluserclone工具了。
权限
对所有库的读取权限。
对新数据目录的读写权限。
文章转载来自:trustauth.cn