目录
一、先导
1. 自建目标实例
2. 配置目标主从
二、源导出
1. 生成查询用户权限的SQL语句
2. 生成权限的SQL语句
3. 生成创建非主键索引的SQL语句
4. 导出源库结构
5. 导出源库数据
三、目标导入
1. 目标实例设置
2. 创建用户与权限
3. 处理结构导出文件
4. 导入结构
5. 导入数据
6. 添加索引
四、后续
1. 配置到源的复制
2. 切换
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -e "
select concat('show grants for \`',user,'\`@\`',host,'\`;') from mysql.user where user not like 'mysql.%';" -N > show_grants.sql
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -N < show_grants.sql > grants.sql
sed -i 's/$/&;/g' grants.sql;
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -e "
select concat('alter table ',table_schema,'.',table_name,' add ',concat('index ',index_name),' (',col,');') create_index
from (
select table_schema,table_name,index_name,group_concat(column_name order by seq_in_index) col
from information_schema.statistics
where table_schema in ('test', 'test_jhy') and index_name <> 'PRIMARY'
group by table_schema,table_name,index_name
order by table_schema,table_name,index_name) t;" -N > create_index.sql
# max_allowed_packet 不能大于目标库的值
mysqldump -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock --no-data --single-transaction --triggers --routines --events --set-gtid-purged=OFF --master-data=2 -e --max_allowed_packet=1073741824 -e --net_buffer_length=16384 --databases test test_jhy | gzip > dump_db.sql.gz
mysqldump -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock --single-transaction --set-gtid-purged=OFF --master-data=2 -e --max_allowed_packet=1073741824 -e --net_buffer_length=16384 --no-create-db --no-create-info --databases test test_jhy | gzip > dump_data.sql.gz
bulk_insert_buffer_size=1073741824
innodb_buffer_pool_size=34359738368
innodb_flush_log_at_trx_commit=0
max_allowed_packet=1073741824
concurrent_insert=AUTO
innodb_autoinc_lock_mode=2
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock < grants.sql
gunzip dump_db.sql.gz
# 删除除主键外的索引。不能删除主键,否则建表时遇到自增列报错:
# Incorrect table definition; there can be only one auto column and it must be defined as a key
sed -i '/ KEY `/d;' dump_db.sql
# 删除闭括号前的逗号
sed -i ':a;N;$!ba;s/,\n) ENGINE=InnoDB/\n) ENGINE=InnoDB/g' dump_db.sql
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock < dump_db.sql
gunzip dump_data.sql.gz
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock < dump_data.sql
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock < create_index.sql
# 查看复制坐标
more dump_data.sql
-- 配置并启动复制
change master to
master_host='10.10.10.1',
master_port=3306,
master_user='repl',
master_password='123456',
master_log_file='aaaaaaaaaaaa',
master_log_pos=xxxxxx;
start slave;
show slave status\G