linuxmysql復制資料庫
A. windows與linux的mysql資料庫怎麼做雙主復制
第一:最簡單的辦法是使用phpmyadmin。 第二:通過該軟體,在liunux下,導出所需的資料庫,生成一個sql格式的文件。 第三:同樣是使用該軟體,在windows下,做一個導入操作,將保存的sql格式文件導入進來,就可以了。
B. 在linux中導入sql文件的方法分享(使用命令行轉移mysql資料庫)
因導出sql文件
在你原來的網站服務商處利用phpmyadmin導出資料庫為sql文件,這個步驟大家都會,不贅述。
上傳sql文件
前面說過了,我們沒有在雲主機上安裝ftp,怎麼上傳呢?
打開ftp客戶端軟體,例如filezilla,使用伺服器IP和root及密碼,連接時一定要使用SFTP方式連接,這樣才能連接到linux。注意,這種方法是不安全的,但我們這里沒有ftp,如果要上傳本地文件到伺服器,沒有更好更快的方法。
我們把database.sql上傳到/tmp目錄。
連接到linux,登錄mysql
使用putty連接到雲主機。putty的使用方法這里就不介紹了。
連接之後,登錄mysql
復制代碼
代碼如下:
>mysql
-u
root
-p
>password:
注意,如果你之前建立了其他的mysql用戶,可以選擇合適的用戶登錄。關於mysql的命令行,你可以在其他地方學習。
把上傳上去的sql導入到資料庫中
按照下面的三個步驟,快速導入這個sql文件
復制代碼
代碼如下:
mysql>use
yourdatabasename;
mysql>set
names
utf8;
mysql>source
/tmp/database.sql;
然後屏幕上就會不斷的滾,最後提示導入成功。
最後,記得將database.sql刪除。
C. Linux系統下怎麼把MySQL的資料庫拷貝出來
#!/bin/sh
#備份web文件到/www/backup 下
rm -rf /www/backup/checkic* #刪除以前備份文件
#獲得時間格式如 2014-11-07
bdate=`date +%Y-%m-%d`
echo $bdate
#判斷web文件是否存在
if [ -d /www/backup/default ]
then
rm -rf /www/backup/default
echo "刪除文件成功!"
cp -r /www/web/default /www/backup/default #復制checkic文件到 /backup
echo "復制文件成功"
else
cp -r /www/web/default /www/backup/default #復制checkic文件到 /backup
echo "復制文件成功"
fi
#判斷web文件是否存在
if [ -d /www/backup/default ]
then
mkdir /www/backup/default/db
echo "成功創建db文件夾"
else
echo "db文件夾沒有成功創建"
exit 0
fi
#備份資料庫
mysqlmp -u root -pcheckic2014 wpshop_checkic>/www/backup/default/db/checkic-${bdate}.sql
cd /www/backup/default
tar -cvzf /www/backup/checkic-${bdate}.tar.gz *
D. 怎樣將遠程的linux伺服器上的mysql資料庫備份到本地的linux伺服器上,我是新手!
如果允許外網IP直接連接資料庫的話,可以使用SQLyog這樣的工具來進行備份,如果不支持遠程連接的話,可以裝個phpmyadmin來進行備份。
E. 如何將資料庫導入一個新的mysql裡面 我用的linux系統 安裝了mysql5.0.18 如何將拷貝的數據導入 求詳細步驟
本地WINDOWS,伺服器LINUX情況下:
1、在本地安裝一個MySQL GUI Tools 5.0
2、打開MySQLAdministrator.exe,輸入伺服器的IP,埠、用戶名,密碼,進入管理界面
3、在打開的窗口左側樹中選擇「恢復」,右側點擊「打開備份文件」,選擇你原來備份的SQL文件,這時候可以選擇「目標資料庫」,「原始資料庫」的意思是備份文件里指定的資料庫,如果想更換或原來沒有資料庫,可先創建一個資料庫,然後在「其他資料庫」中選擇創建的那個,選項里選擇「忽略錯誤」,點擊開始恢復,數據就進到你的Linux伺服器上的MYSQL里了。
本地LINUX下,參考:
http://hi..com/wxlccsu/blog/item/0af1c93a468b2c3297ddd886.html
和shell腳本:
http://..com/question/240250652.html
F. 怎麼查看linux mysql 主從復制 連接成功
MySQL是開源的關系型資料庫系統。復制(Replication)是從一台MySQL資料庫伺服器(主伺服器master)復制數據到另一個伺服器(從伺服器slave)的一個進程。
配置主伺服器(master)
1、編輯資料庫配置文件my.cnf,一般在/etc/目錄下。
#vi /etc/my.cnf
在[mysqld]的下面加入下面代碼:
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=wordpress
binlog_ignore_db=mysql
server-id=1中的1可以任定義,只要是唯一的就行。
binlog-do-db=wordpress是表示只備份wordpress。
binlog_ignore_db=mysql表示忽略備份mysql。
不加binlog-do-db和binlog_ignore_db,那就表示備份全部資料庫。
2、然後重啟MySQL:
#service mysqld restart
3、登錄MySQL伺服器。
#mysql -uroot -p
在主伺服器新建一個用戶賦予「REPLICATION SLAVE」的許可權。你不需要再賦予其它的許可權。在下面的命令,把X.X.X.X替換為從伺服器的IP。
mysql>CREATE USER 'user'@ 'X.X.X.X' IDENTIFIED BY 'password';
mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password';
4、執行以下命令鎖定資料庫以防止寫入數據。
mysql>FLUSH TABLES WITH READ LOCK;
5、退出mysql命令行,導出資料庫
#mysqlmp -u root -p123456 --all-databases --lock-tables=false -- > /root/all.sql
6、使用scp命令傳輸資料庫文件all.sql到從伺服器。
#scp /root/all.sql [email protected]:/root
7、再次連接資料庫進入mysql命令行查看master狀態。
mysql>SHOW MASTER STATUS;
請記下顯示的信息,配置從伺服器會用到。
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000003 | 1001741 | dbispconfig | mysql |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
8、解鎖數據表。
mysql>UNLOCK TABLES;
配置從伺服器(slave)
登錄從伺服器。
1、導入主伺服器的資料庫。
#mysql -u root -p123456 < /root/all.sql
2、編輯配置文件my.cnf,在[mysqld]下面加入:
server-id=2
2可以自己定義,只要保證唯一的就行。
3、保存文件並重啟mysqld。
#service mysqld restart
4、登錄mysql伺服器,執行以下命令。
mysql>CHANGE MASTER TO
MASTER_HOST='X.X.X.X',
MASTER_USER='user',
MASTER_PASSWORD='password',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=98,
MASTER_CONNECT_RETRY=10;
MASTER_HOST:主伺服器的IP。
MASTER_USER:配置主伺服器時建立的用戶名
MASTER_PASSWORD:用戶密碼
MASTER_PORT:主伺服器mysql埠,如果未曾修改,默認即可。
5、啟動slave進程。
mysql>START SLAVE;
6、查看mysql的日誌,一般在/var/log/目錄下的mysqld.log,如果啟動成功,你應該會看到類似下面的日誌。
[root@localhost ~]# vi /etc/my.cnf
091104 8:42:02 [Note] Slave I/O thread: connected to master 『[email protected]:3306?, replication started in log 『mysql-bin.000001? at position 98
現在主伺服器和從伺服器已經配置好了。另外你可能需要設置主伺服器的資料庫二進制日誌的過期時間,可以在配置文件中使用參數expire_logs_days來設定。
G. linux怎麼拷貝mysql資料庫
1、MySQL資料庫導出 /usr/local/mysql/bin/mysqlmp -u root -p123456 test> /home/backup/test.sql 其中:root為資料庫用戶名 123456為對應root資料庫密碼 test是需要導出的資料庫名。 /home/backup/test.sql是資料庫文件sql導出的路徑。
H. 我把linux下的mysql文件夾拷貝了下來,想在另一台linux下的mysql上恢復數據,多個資料庫文件,出現1146錯誤
項目上 MySQL還原 SQL 備份經常會碰到一個錯誤如下,且通常出現在導入視圖、函數、存儲過程、事件等對象時,其根本原因就是因為導入時所用賬號並不具有SUPER 許可權,所以無法創建其他賬號的所屬對象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常見場景:1. 還原 RDS 時經常出現,因為 RDS 不提供 SUPER 許可權;2. 由開發庫還原到項目現場,賬號許可權等有所不同。
處理方式:
1. 在原庫中批量修改對象所有者為導入賬號或修改SQL SECURITY為Invoker;2. 使用 mysqlmp 導出備份,然後將 SQL 文件中的對象所有者替換為導入賬號。
二、問題原因我們先來看下為啥會出現這個報錯,那就得說下 MySQL 中一個很特別的許可權控制機制,像視圖、函數、存儲過程、觸發器等這些數據對象會存在一個DEFINER和一個SQL SECURITY的屬性,如下所示:
--視圖定義CREATEALGORITHM=UNDEFINEDDEFINER=`root`@`%`SQLSECURITYDEFINERVIEWv_test
--函數定義CREATEDEFINER=`root`@`%`FUNCTION`f_test()`RETURNSvarchar(100)SQLSECURITYDEFINER
--存儲過程定義CREATEDEFINER=`root`@`%`PROCEDURE`p_test`()SQLSECURITYDEFINER
--觸發器定義CREATE DEFINER=`root`@`%` trigger t_test
--事件定義CREATE DEFINER=`root`@`%` EVENT `e_test`
DEFINER:對象定義者,在創建對象時可以手動指定用戶,不指定的話默認為當前連接用戶;
SQL SECURITY:指明以誰的許可權來執行該對象,有兩個選項,一個為DEFINER,一個為INVOKER,默認情況下系統指定為 DEFINER;DEFINER:表示按定義者的許可權來執行;INVOKER:表示按調用者的許可權來執行。
如果導入賬號具有 SUPER 許可權,即使對象的所有者賬號不存在,也可以導入成功,但是在查詢對象時,如果對象的SQL SECURITY為DEFINER,則會報賬號不存在的報錯。ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist
改寫好處:1. 可以避免還原時遇到 DEFINER 報錯相關問題;2. 根據輸出信息知道備份是否正常進行,防止備份中遇到元數據鎖無法獲取然後一直卡住的情況。

I. mysql的主從復制,linux重啟後遇到問題。
1、編輯資料庫配置文件my.cnf,一般在/etc/目錄下。
#vi /etc/my.cnf
在[mysqld]的下面加入下面代碼:
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=wordpress
binlog_ignore_db=mysql
server-id=1中的1可以任定義,只要是唯一的就行。
binlog-do-db=wordpress是表示只備份wordpress。
binlog_ignore_db=mysql表示忽略備份mysql。
不加binlog-do-db和binlog_ignore_db,那就表示備份全部資料庫。
2、然後重啟MySQL:
#service mysqld restart
3、登錄MySQL伺服器。
#mysql -uroot -p
在主伺服器新建一個用戶賦予「REPLICATION SLAVE」的許可權。你不需要再賦予其它的許可權。在下面的命令,把X.X.X.X替換為從伺服器的IP。
mysql>CREATE USER 'user'@ 'X.X.X.X' IDENTIFIED BY 'password';
mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password';
4、執行以下命令鎖定資料庫以防止寫入數據。
mysql>FLUSH TABLES WITH READ LOCK;
5、退出mysql命令行,導出資料庫
#mysqlmp -u root -p123456 --all-databases --lock-tables=false -- > /root/all.sql
6、使用scp命令傳輸資料庫文件all.sql到從伺服器。
#scp /root/all.sql [email protected]:/root
7、再次連接資料庫進入mysql命令行查看master狀態。
mysql>SHOW MASTER STATUS;
請記下顯示的信息,配置從伺服器會用到。
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000003 | 1001741 | dbispconfig | mysql |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
8、解鎖數據表。
mysql>UNLOCK TABLES;
配置從伺服器(slave)
登錄從伺服器。
1、導入主伺服器的資料庫。
#mysql -u root -p123456 < /root/all.sql
2、編輯配置文件my.cnf,在[mysqld]下面加入:
server-id=2
2可以自己定義,只要保證唯一的就行。
3、保存文件並重啟mysqld。
#service mysqld restart
4、登錄mysql伺服器,執行以下命令。
mysql>CHANGE MASTER TO
MASTER_HOST='X.X.X.X',
MASTER_USER='user',
MASTER_PASSWORD='password',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=98,
MASTER_CONNECT_RETRY=10;
MASTER_HOST:主伺服器的IP。
MASTER_USER:配置主伺服器時建立的用戶名
MASTER_PASSWORD:用戶密碼
MASTER_PORT:主伺服器mysql埠,如果未曾修改,默認即可。
5、啟動slave進程。
mysql>START SLAVE;
6、查看mysql的日誌,一般在/var/log/目錄下的mysqld.log,如果啟動成功,你應該會看到類似下面的日誌。
[root@localhost ~]# vi /etc/my.cnf
091104 8:42:02 [Note] Slave I/O thread: connected to master 『[email protected]:3306?, replication started in log 『mysql-bin.000001? at position 98
現在主伺服器和從伺服器已經配置好了。另外可能需要設置主伺服器的資料庫二進制日誌的過期時間,可以在配置文件中使用參數expire_logs_days來設定。
J. 復制linux MySQL中的資料庫文件夾 導致許可權為root MySQL無法訪問
mysql在linux下的啟動用戶是mysql
復制的時候直接cp 所以會出現這種情況
可以cp -a 源文件 目標路徑這樣帶許可權復制即可
2.無法訪問的處理方法
chown-Rmysql:mysql資料庫文件夾