複製數據
- 複製數據結構及數據
mysql>create table new_table_name as select * from old_table_name;
- 只複製結構
mysql>create table new_tabe_name as select * from old_table_name where 1=2;
或者
mysql>create table new_table_name like old_table_name;
- 只複製數據
insert into new_table_name select * from old_table_name;
或者
mysql>insert into new_table_name(column1, column2,...,columnn) select column1,column2,...,columnn from old_table_name;
導出數據到文件
mysql命令行(導出到MySQL sever的路徑):
mysql> select * from table_name into outfile "/path/out_file_name";
bash shell(導出到MySQL客戶端機器路徑):
mysql -h10.123.10.10 -uusername -ppwd -Pport -e "select * from table_name" >> /path/out_file_name
備份數據文件
mysqldump -h10.10.10.10 -uusername -ppwd -Pport mydbname > mydbname.sql
mysqldump -h10.10.10.10 -uusername -ppwd -Pport -B mydbname > mydbname.sql
mysqldump -h10.10.10.10 -uusername -ppwd -Pport --all-databases > all_database.sql
其中,-B參數添加後導出的數據包含create database的語句,導入的時候,新數據庫不用實現創建表
主從同步
- master機器開啓log-bin記錄,並在mysql配置文件中設置唯一server-id, 重啓mysql服務
vim my.cnflog-bin=/path/bin-log-name server-id=1
- slave機器的mysql配置中設置與master機器不同的唯一server-id,重啓mysql服務。
vim my.cnfserver-id=2
- master機器mysql創建同步專用賬號,並對slave機器授權
create user 'repl'@'%' identified by "replpwd"; grant replication slave on *.* to "repl"@"%" identified by "replpwd"; flush privileges;
- master 機器:
- 加鎖停止更新
mysql> set global read_only=1;
- 記下當前更新的日誌位置,導出當前數據
mysql> show master status\G;
- 導出歷史的數據
mysqldump -hmaster-ip -uusername -ppwd -Pport -B mydbname > mydbname.sql
- 解鎖表
mysql> set global read_only=0;
- 加鎖停止更新
- slave機器:
- 導入從master導出的歷史數據
mysql -hslave-ip -uusername -ppasswd -Pport mydbname < mydbname.sql
- 開始同步master的數據
其中,master_log_pos爲在master機器記錄的log位置(這個點兒之前的數據已經在上一步導入歷史數據時導入)mysql> change master to master_host='master_ip',master_user='repl',master_password='replpwd',master_log_gile='file-0001',master_log_pos=12345; mysql> start slave;
- 導入從master導出的歷史數據