9159金沙游艺场


PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别

20190323 前端开发日报

MySQL 5.6.12 发布

图片 1

MySQL主从同步设置和同步错误处理

MySQL团队今天带来了MySQL
5.6.12版本。该版本的主要改进如下:mysql_upgrade改进:现在会验证编译的版本是否与服务器版本相匹配,如果不匹配则退出。可以通过–version-check
和–skip-version-checking选项来启用和禁用版本检查。兼容性修复:GRANT
语句如果用于一个现有的MySQL账户,可能会产生意想不到的结果。这是因为如果命名账户已经存在,则禁止使用GRANT
语句和IDENTIFIED
WITH子句来创建一个新用户。Replication的重要变化:如果服务器使用–binlog-ignore-db参数,且SELECTDATABASE()返回null,那么以dbname.tblname格式使用完全限定表名的语句不会被写入二进制日志。此外,该版本还修复了大量InnoDB、Replication相关的bug,详细信息:Changes
in MySQL 5.6.12下载地址:

 

注意:

 

1、两台服务器数据库版本应一致,如果不一致,从服务器的版本要高于主服务器的版本。

 

2、MySQL进行实时数据同步,本质上是将mysql动作同步到Slave服务器,而不是对实质的数据进行同步。所以同步开始前,两端的数据要保持一致。

 

Master服务器:192.168.0.1

 

Slave服务器:192.168.0.2

 

===  Master停止运行时,Mysql同步配置===

 

一、主服务器设置:

 

1、修改/etc/my.cnf 

在[mysqld]区段内加入参数 

server-id=1

 

log-bin 

sql-bin-update-same

 

2、为Slave服务器创建连接账户,用于同步

 

mysql>GRANT FILE ON *.* TO
[email protected]
IDENTIFIED BY ‘1234’;

 

3、重启mysql服务:service mysqld restart

 

此时因为有加入log-bin参数,因此开始有index产生了,在/var/lib/mysql目录下有.index档案纪录数据库的异动log.

 

二、Slave服务器设置:

 

1、修改/etc/my.cnf 

在[mysqld]区段加入 

master-host=192.168.0.1 

master-user=backup 

master-password=1234 

master-port=3306 

server-id=2 

master-connect-retry=60 预设重试间隔60秒 

replicate-do-db=vbb 告诉slave只做vbb数据库的更新

replicate-ignore-db=mysql #不同步的数据库

replicate-ignore-table=vbb.users #不同步vbb数据库的users表

log-slave-updates=1

 

2、重启Slave服务器mysql服务

 

三、Slave服务器从主服务器读取数据,并开启同步

 

1、mysql>FLUSH TABLES WITH READ LOCK; #首先执行这个,对主服务器加锁

 

2、mysql>LOAD DATA FROM MASTER  #语句的话,必须授予全局的 FILE 和
SELECT 权限,仅针对MyISAM引擎,对InnoDB表无用。

 

3、如果数据是InnoDB的,需要在服务器上将表结构和数据分开导出,然后拷贝至Slave服务器。

 

导出整个数据库结构和数据:mysqldump -u用户名 -p密码 -h主机 database >
filename.sql

导出某个表的数据和结构:mysqldump -u用户名 -p密码 -h主机 database table
> filename.sql

只导出数据库中表的数据:mysqldump -u用户名 -p密码 -h主机 -T database
table > filename.sql

只导出数据库中表的结构:mysqldump -u用户名 -p密码 -h主机 -d database
table > filename.sql

 

4、确保两端数据一致后,开启同步

 

mysql>slave start;

 

5、查看Slave服务器同步信息

 

mysql>show slave statusG;

 

可以看到,Slave_IO_Running 和 Slave_SQL_Running 两列的值都为
“Yes”,这表明 Slave 的 I/O 和 SQL 线程都在正常运行。

 

6、对Master服务器释放锁

 

mysql>UNLOCK TABLES;

 

=== Master还在运行中,如何在不停止它的情况下配置Slave ===

 

注:主从服务器的配置同上。

 

1、首先在Master服务器查看同步日志信息

 

mysql>show master status;

 

+——————+———-+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000054 | 680 |                     | mysql |

+——————+———-+————–+——————+

 

可以看到日志文件是:mysql-bin.000054,同步点是680

 

2、在Slave服务器配置同步

 

mysql>slave stop; # mysql默认同步开始

 

mysql>CHANGE MASTER TO
MASTER_HOST=’192.168.0.1′,MASTER_USER=’backup’,MASTER_PASSWORD=’1234′,MASTER_LOG_FILE=’mysql-bin.000054′,MASTER_LOG_POS=690;
 #配置同步点

 

mysql>slave start; #开启同步

 

3、查看同步信息

 

mysql>show slave statusG;

 

可以看到,Slave_IO_Running 和 Slave_SQL_Running 两列的值都为
“Yes”,这表明 Slave 的 I/O 和 SQL 线程都在正常运行。

 

4、配置完成

 

MYSQL服务器复制配置

 

这是根据我之前看的MYSQL复制的文档然后自己亲自实验的过程.配置的功能比较简单.

环境:

主服务器:

redhat9

mysql 5.0.16

机器名:dbmaster

IP:192.168.0.111

从服务器:

redhat9

mysql5.0.16

机器名:dbslave

IP:192.168.0.100

 

配置过程:

整个过程与MYSQL文档中的复制设置步骤一一对应,只是具体化和标明了一些要注意的地方..如果有兴趣的朋友可以对照阅读,会更加理解.

 

1.确认两台服务器的MYSQL版本,用mysql –V命令查看

注意:
MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,所以最好采用相同的版本.如果达不到要求,必须要保证Master的版本不能高于Slave版本

 

2.在主服务器上为服务器设置一个连接账户。该账户必须授予REPLICATION
SLAVE权限。我为了简单没做这一步,直接用root账户.

正常的步骤是:

假定你的域为mydomain.com,想要创建用户名为repl的一个账户,从服务器可以使用该账户从你的域内的任何主机使用密码slavepass来访问主服务器。要创建该
账户,可使用GRANT语句:

mysql> GRANT REPLICATION SLAVE ON *.*   

->TO ‘repl’@’%.mydomain.com’ IDENTIFIED BY ‘slavepass’;

如果想要在Slave上有权限执行 “LOAD TABLE FROM MASTER” 或 “LOAD DATA FROM
MASTER” 语句的话,必须授予全局的 FILE 和 SELECT 权限:

mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO
 ‘repl’@’%.mydomain.com’ IDENTIFIED BY ‘rep’;

 

3.在主服务器上执行FLUSH TABLES WITH READ
LOCK语句来刷新表,同时阻止写操作.:

mysql> FLUSH TABLES WITH READ LOCK;

然后对主服务器上的数据进行快照。(此时不要退出mysql的提示符,退出的话就解锁了.新开一个ssh窗口进行下面所说的归档打包操作)

创建快照最简单的途径是使用归档程序对主服务器上的数据目录中的数据库进行二进制备份。要使用tar来创建包括所有数据库的归档文件,进入主服务器的数据目录,然后执行命令:(注意下面的目录操作是在bash的提示符下进行,我用shell>来代表,还要注意执行的命令是在哪台服务器上)

shell> tar -cvf /tmp/mysql-snapshot.tar .

然后将归档文件复制到从服务器的/tmp目录。

在从服务器上,进入数据库的数据目录,并使用下述命令解压缩归档文件:

shell> tar -xvf /tmp/mysql-snapshot.tar

 

当FLUSH TABLES WITH READ
LOCK所置读锁定有效时(这就是刚刚所说不要退出mysql提示符的原因),读取主服务器上当前的二进制日志名和偏移量值,直接输入命令SHOW
MASTER STATUS.

mysql > SHOW MASTER STATUS;

+————————+————+——————-+———————–+

| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |

+————————+————+——————-+————————+

| mysql-bin.000045  |     947 |             |                 |

+————————+————+——————-+———————–+

 

File列显示日志名,而Position显示偏移量。在该例子中,二进制日志值为mysql-bin.000045偏移量为947。记录该值。以后设置从服务器时需要使用这些值。它们表示复制坐标,告诉从服务器应从该点开始从主服务器上进行更新。

取得快照并记录日志名和偏移量后,可以在主服务器上重新启用写活动:

mysql> UNLOCK TABLES;

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图