mysqlserverclone --克隆实例。
1.准备my.cnf文件:
[root@mysql1 system]# cat /mysql/mysql3307.cnf
[mysqld]
port=3307
innodb_force_recovery = 0
datadir=/mysql/mysql3307
socket=/mysql/mysql3307.sock
symbolic-links=0
user=mysql
server_id=133307 --修改。
expire_logs_days = 7
log_bin=/mysql/data/binlog3307/mysql-binlog
log_bin_index=/mysql/data/binlog3307/mysql-binlog.index
binlog_format=row
binlog_rows_query_log_events=on
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates = 1
binlog_gtid_simple_recovery = 1
default-time-zone= '+8:00'
secure_file_priv=''
skip-grant-tables
[mysqld_safe]
log-error=/mysql/mysql3307.log
pid-file=/mysql/mysql3307.pid
innodb_file_per_table=1
2.创建相关目录并授权。
mkdir -p /mysql/data/binlog3307/ /mysql/mysql3307
chown -R mysql:mysql /mysql
3.克隆实例。
mysqlserverclone --server=root:rootroot@localhost:3306:/tmp/mysql.sock --new-data=/mysql/mysql3307 --new-port=3307 --new-id=12 --root-password=rootroot
旧实例端口是:3306
新实例端口是:3307
4.克隆后权限为root ;
chown -R mysql:mysql /mysql/mysql3307
vi /mysql/mysql3307/auto.cnf --修改server-uuid 改为和之前不一样的。
5.新实例启动时报:
新实例和老实例的ibdata 冲突。
(1)关闭旧的实例 systemctl stop mysql
(2)启动新的实例:mysqld --defaults-file=/mysql/mysql3307.cnf &1>/dev/null &
--发现新实例无法登录。
vi /mysql/mysql3307.cnf
[mysqld]
skip-grant-tables --免密登录。
--更新密码。
mysql> update mysql.user set authentication_string=password('rootroot') where user='root' and host='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> update mysql.user set authentication_string=password('rootroot') where user='root' and host='%';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
--注释:
vi /mysql/mysql3307.cnf
#[mysqld]
skip-grant-tables
重启3307:
kill -9 pidofmysqld;
mysqld --defaults-file=/mysql/mysql3307.cnf &1>/dev/null &
--登录:验证。
[root@mysql1 mysql]# mysql -uroot -prootroot -P3307 --socket=/mysql/mysql3307.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
(3)再启动旧的实例:systemctl start mysql
mysql -uroot -prootroot -P3306 --socket=/mysql/mysql3306.sock
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
总结:
mysqlserverclone 工具我们不常用,如果像创建多个实例直接初始化一个实例就可以了。
但是如果想创建一个和之前的实例一模一样,且当前服务器存在很多内存时则可以使用克隆技术。
151

被折叠的 条评论
为什么被折叠?



