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数据库文件夹