当前位置: 首页 > 编程日记 > 正文

mysql repalication_MySQL主从复制的原理及配置方法(比较详细)

一、复制的原理

MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等等)。每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以便从服务器可以对其数据拷贝执行相同的更新。

将主服务器的数据拷贝到从服务器的一个途径是使用LOAD DATA FROM MASTER语句。请注意LOAD DATA FROM MASTER目前只在所有表使用MyISAM存储引擎的主服务器上工作。并且,该语句将获得全局读锁定。

MySQL 使用3个线程来执行复制功能,其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句。

主服务器创建一个线程将二进制日志中的内容发送到从服务器。该线程可以识别为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程。

从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。

第3个线程是SQL线程,是从服务器创建用于读取中继日志并执行日志中包含的更新。

有多个从服务器的主服务器创建为每个当前连接的从服务器创建一个线程;每个从服务器有自己的I/O和SQL线程。

二、复制线程的状态

1.复制主线程的状态

复制代码 代码如下:

Sending binlog event to slave

二进制日志由各种事件组成,一个事件通常为一个更新加一些其它信息。线程已经从二进制日志读取了一个事件并且正将它发送到从服务器。

Finished reading one binlog; switching to next binlog

线程已经读完二进制日志文件并且正打开下一个要发送到从服务器的日志文件。

Has sent all binlog to slave; waiting for binlog to be updated

线程已经从二进制日志读取所有主要的更新并已经发送到了从服务器。线程现在正空闲,等待由主服务器上新的更新导致的出现在二进制日志中的新事件。

Waiting to finalize termination

线程停止时发生的一个很简单的状态。

2.复制从I/O线程状态

复制代码 代码如下:Connecting to master

线程正试图连接主服务器。

Checking master version

建立同主服务器之间的连接后立即临时出现的状态。

Registering slave on master

建立同主服务器之间的连接后立即临时出现的状态。

Requesting binlog dump

建立同主服务器之间的连接后立即临时出现的状态。线程向主服务器发送一条请求,索取从请求的二进制日志文件名和位置开始的二进制日志的内容。

Waiting to reconnect after a failed binlog dump request

如果二进制日志转储请求失败(由于没有连接),线程进入睡眠状态,然后定期尝试重新连接。可以使用–master-connect-retry选项指定重试之间的间隔。

Reconnecting after a failed binlog dump request

线程正尝试重新连接主服务器。

Waiting for master to send event

线程已经连接上主服务器,正等待二进制日志事件到达。如果主服务器正空闲,会持续较长的时间。如果等待持续slave_read_timeout秒,则发生超时。此时,线程认为连接被中断并企图重新连接。

Queueing master event to the relay log

线程已经读取一个事件,正将它复制到中继日志供SQL线程来处理。

Waiting to reconnect after a failed master event read

读取时(由于没有连接)出现错误。线程企图重新连接前将睡眠master-connect-retry秒。

Reconnecting after a failed master event read

线程正尝试重新连接主服务器。当连接重新建立后,状态变为Waiting for master to send event。

Waiting for the slave SQL thread to free enough relay log space

正使用一个非零relay_log_space_limit值,中继日志已经增长到其组合大小超过该值。I/O线程正等待直到SQL线程处理中继日志内容并删除部分中继日志文件来释放足够的空间。

Waiting for slave mutex on exit

线程停止时发生的一个很简单的状态。

3.复制从SQL线程状态

复制代码 代码如下:

Reading event from the relay log

线程已经从中继日志读取一个事件,可以对事件进行处理了。

Has read all relay log; waiting for the slave I/O thread to update it

线程已经处理了中继日志文件中的所有事件,现在正等待I/O线程将新事件写入中继日志。

Waiting for slave mutex on exit

线程停止时发生的一个很简单的状态。

三、复制传递和状态文件

从服务器靠中继日志来接收从主服务器上传回来的日志。并依靠状态文件来记录已经从主服务器接收了哪些日志,已经恢复了哪些日志。

中继日志与二进制日志的格式相同,并且可以用mysqlbinlog读取。SQL线程执行完中继日志中的所有事件并且不再需要之后,立即自动删除它。可以采用–relay-log和–relay-log-index服务器选项覆盖默认中继日志和索引文件名。其中索引文件名的作用是记录目前正在使用中继日志。

在下面的条件下将创建新的中继日志:

1.每次I/O线程启动时创建一个新的中继日志。

2.当日志被刷新时;例如,用FLUSH LOGS或mysqladmin flush-logs。

3.当当前的中继日志文件变得太大时。“太大”含义的确定方法:

max_relay_log_size,如果max_relay_log_size > 0

max_binlog_size,如果max_relay_log_size = 0

状态文件名默认为master.info和relay-log.info。其中IO线程更新master.info文件,SQL线程更新relay-log.info文件。

文件中的行和SHOW SLAVE STATUS显示的列的对应关系为:

master.info文件:

复制代码 代码如下:行 描述

1 文件中的行号

2 Master_Log_File

3 Read_Master_Log_Pos

4 Master_Host

5 Master_User

6 密码(不由SHOW SLAVE STATUS显示)

7 Master_Port

8 Connect_Retry

9 Master_SSL_Allowed

10 Master_SSL_CA_File

11 Master_SSL_CA_Path

12 Master_SSL_Cert

13 Master_SSL_Cipher

14 Master_SSL_Key

relay-log.info文件:

复制代码 代码如下:行 描述

1 Relay_Log_File

2 Relay_Log_Pos

3 Relay_Master_Log_File

4 Exec_Master_Log_Pos

当备份从服务器的数据时,你还应备份这两个小文件以及中继日志文件。它们用来在恢复从服务器的数据后继续进行复制。如果丢失了中继日志但仍然有 relay-log.info文件,你可以通过检查该文件来确定SQL线程已经执行的主服务器中二进制日志的程度。然后可以用 Master_Log_File和Master_LOG_POS选项执行CHANGE MASTER TO来告诉从服务器重新从该点读取二进制日志。当然,要求二进制日志仍然在主服务器上。所以最好建议将自动删除中继日志的特性关闭,手工写shell角本来防止空间满的问题。

四、复制的配置步骤

1.创建专门用于复制的用户(建议这样做),从服务器采用该帐户登陆主服务器:

复制代码 代码如下:

GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%' IDENTIFIED BY 'logzgh' ;

如果你计划从从属服务器主机使用LOAD TABLE FROM MASTER或LOAD DATA FROM MASTER语句,你需要授予该账户其它权限:

授予账户SUPER和RELOAD全局权限。

为所有想要装载的表授予SELECT权限。任何该 账户不能SELECT的主服务器上的表被LOAD DATA FROM MASTER忽略掉。

2.将数据库文件移到从服务器上

情况一:若只用到MyISAM表

复制代码 代码如下:mysql> FLUSH TABLES WITH READ LOCK;

(刷新所有表并且阻止其它写入,不要退出该客户端,以保持读锁有效。若退出,读锁就会释放。)

比较简单的办法就是把数据目录打包压缩。

复制代码 代码如下:$ tar -cvf /home/mysql/snapshot.tar ./data (在master上)

$ tar -xvf /home/mysql/snapshot.tar (在slave上)

可能不需要同步 mysql 数据库,因为在slave上的权限表和master不一样。这时,解开压缩包的时候要排除它。

同时在压缩包中也不要包含任何日志文件,和状态文件master.info、relay-log.info。

复制代码 代码如下:mysql> SHOW MASTER STATUS;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000058 | 45036137 | | |

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

mysql> UNLOCK TABLES;

情况二:若用到InnoDB表

方法一:使用InnoDB Hot Backup工具。它无需在master上请求任何锁就能做到快照的一致性,并且在后面中在slave上要用到的快照中已经记录了日志文件名以及偏移位置。

方法二:记录当前日志文件及偏移位置,在master关闭前执行:

复制代码 代码如下:mysql> FLUSH TABLES WITH READ LOCK;

mysql> SHOW MASTER STATUS;

尽快记下显示结果中的日志文件及偏移位置。然后,在不解锁的情况下关闭master,确保master上的快照和记录的结果一致。

关闭master服务器,$ mysqladmin -u root shutdown

拷贝 InnoDB 数据文件,日志文件,以及表结构定义文件(.frm文件)。

情况三:可以同时用于MyISAM和InnoDB表

在master上做SQL转储而无需如上所述备份二进制日志。运行mysqldump –master-data命令,然后把结果文件转储到slave上。

不过,这比拷贝二进制日志慢点。

3.修改my.cnf文件

在master上my.cnf文件:(重启生效)

复制代码 代码如下:[mysqld]

log_bin

server_id=1 (值是 1 到 2^32-1 之间的正整数)

在slave上my.cnf文件:

复制代码 代码如下:[mysqld]

server_id=2 (ID必须和master的ID不同。若有多个slave,则每个slave都必须有唯一的id。)

配置slave的扩展选项

复制代码 代码如下:master_host=db-master.mycompany.com

master_port=3306

master_user=rep

master_password=freitag

master_connect_retry=60 (若master宕机或者slave连接断开,slave会定期尝试连接到master上,重试的间隔由该选项来控制,默认值是60秒。)

report_host=db-slave.mycompany.com

slave_net_timeout=3600 (slave默认会在3600秒后,若还没收到来自master的数据,则会当作网络断开的情况来处理。)

服务器认为master.info的优先级比配置文件my.cnf高,

第一次启动slave时,master.info不存在,它从my.cnf中读取选项值,然后把它们保存在master.info中。

下次重启slave时,它只读取master.info的内容,而不会读取my.cnf中的选项值。

想要使用不同的选项值,可以删除master.info后重启slave,或者使用CHANGE MASTER TO语句(推荐)重置选项值。

4.启动从服务器线程

复制代码 代码如下:mysqld_safe –user=mysql –skip-slave-start & (启动MySQL服务器,但不启动slave)

设置master_log_file等参数

mysql> CHANGE MASTER TO MASTER_HOST='qa-sandbox-1′,

MASTER_USER='rep',

MASTER_PASSWORD='logzgh',

MASTER_LOG_FILE='mysql-bin.000007′,

MASTER_LOG_POS=471632;

mysql> START SLAVE;

执行这些程序后,从服务器应连接主服务器,并补充自从快照以来发生的任何更新。

如果你忘记设置主服务器的server-id值,从服务器不能连接主服务器。

注释:为了保证事务InnoDB复制设置的最大可能的耐受性和一致性,

应在主服务器的my.cnf文件中使用innodb_flush_log_at_trx_commit=1和sync-binlog=1。

复制代码 代码如下:

mysql> show variables; (检查是否read-only,该选项令slave除了slave线程或者拥有SUPER权限用户之外的都不能更新数据,确保slave不会接受来自其他客户端的更新。)

mysql> show processlist; (检查是否slave-start)

在启动mysql的同时启动slave:

复制代码 代码如下:mysqld_safe –user=mysql –read-only & (启动MySQL服务器,同时启动slave的I/O线程)

mysql> SHOW SLAVE STATUSG;

5.切换slave为master,在slave上:

复制代码 代码如下:mysql> STOP SLAVE;

mysql> RESET MASTER;

五.复制启动选项

–read_only

该选项让从服务器只允许来自从服务器线程或具有SUPER权限的用户的更新。可以确保从服务器不接受来自客户的更新。

–replicate_do_db=db_name

告诉从服务器只做默认数据库(由USE所选择)为db_name的语句的复制。要指定多个数据库,应多次使用该选项,每个数据库使用一次。请注意不复制跨数据库的语句

–replicate_do_table=db_name.tbl_name

告诉从服务器线程只做对指定表的复制。要指定多个表,应多次使用该选项,每个表使用一次。同–replicate-do-db对比,允许跨数据库更新。

–replicate_ignore_db=db_name

告诉从服务器不要复制默认数据库(由USE所选择)为db_name的语句。要想忽略多个数据库,应多次使用该选项,每个数据库使用一次。

–replicate-ignore-table=db_name.tbl_name

告诉从服务器线程不要复制更新指定表的任何语句(即使该语句可能更新其它的表)。要想忽略多个表,应多次使用该选项,每个表使用一次。

–replicate_wild_do_table=db_name.tbl_name

告诉从服务器线程限制复制更新的表匹配指定的数据库和表名模式的语句。模式可以包含‘%'和‘_'通配符,与LIKE模式匹配操作符具有相同的含义。要指定多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。

–replicate_wild_ignore_table=db_name.tbl_name

告诉从服务器线程不要复制表匹配给出的通配符模式的语句。要想忽略多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。

–replicate_rewrite_db=from_name->to_name

告诉从服务器如果默认数据库(由USE所选择)为主服务器上的from_name,则翻译为to_name。只影响含有表的语句

–report_host=slave_name

从服务器注册过程中报告给主服务器的主机名或IP地址。该值出现在主服务器上SHOW SLAVE HOSTS的输出中。如果不想让从服务器自己在主服务器上注册,则不设置该值。

–report_port=slave_port

连接从服务器的TCP/IP端口号,从服务器注册过程中报告给主服务器。

–skip_slave_start

告诉从服务器当服务器启动时不启动从服务器线程。使用START SLAVE语句在以后启动线程。

–slave_skip_errors=[err_code1,err_code2,… | all]

通常情况,当出现错误时复制停止,这样给你一个机会手动解决数据中的不一致性问题。该选项告诉从服务器SQL线程当语句返回任何选项值中所列的错误时继续复制。

例如:

–slave-skip-errors=1062,1053

–slave-skip-errors=all

六、不停机配置复制的方法

方法一:

如果你在某时间点做过主服务器备份并且记录了相应快照的二进制日志名和偏移量(通过SHOW MASTER STATUS命令的输出),采用下面的步骤:

1. 确保从服务器分配了一个唯一的服务器ID号。

2. 将备份文件拷到从服务器上。

3. 在从服务器上执行下面的语句,为每个选项填入适当的值:

复制代码 代码如下:mysql> CHANGE MASTER TO

-> MASTER_HOST='master_host_name',

-> MASTER_USER='master_user_name',

-> MASTER_PASSWORD='master_pass',

-> MASTER_LOG_FILE='recorded_log_file_name',

-> MASTER_LOG_POS=recorded_log_position;

4.在从服务器上执行START SLAVE语句。

如果你没有备份主服务器,这里是一个创建备份的快速程序。所有步骤都应该在主服务器主机上执行。

1. 发出该语句:

复制代码 代码如下:mysql> FLUSH TABLES WITH READ LOCK;

2. 仍然加锁时,执行该命令(或它的变体):

复制代码 代码如下:shell> tar zcf /tmp/backup.tar.gz /var/lib/mysql

并拷到从服务器上。

3. 发出该语句并且确保记录了以后用到的输出:

复制代码 代码如下:mysql>SHOW MASTER STATUS;

4. 释放锁:

复制代码 代码如下:mysql> UNLOCK TABLES;

方法二:

一个可选择的方法是,转储主服务器的SQL来代替前面步骤中的二进制复制。要这样做,你可以在主服务器上使用mysqldump –master-data,以后装载SQL转储到到你的从服务器。然而,这比进行二进制复制速度慢。

七、其他

1.不能从使用新二进制日志格式的主服务器向使用旧二进制日志格式的从服务器复制。

2.升级从服务器时,应先关闭从服务器,升级到相应5.1.x版本,然后重启从服务器并重新开始复制。5.1版本的从服务器能够读取升级前写入的旧的中继日志并执行日志中包含的语句。升级后从服务器创建的中继日志为5.1格式。

3.必须在主服务器和从服务器上总是使用相同的全局字符集和校对规则(–default-character-set、–default- collation)。否则,会在从服务器上遇到复制键值错误,因为在主服务器的字符集中被认为是唯一的键值在从服务器的字符集中可能不是唯一的。

4.Q:从服务器需要始终连接到主服务器吗?

A:不,不需要。从服务器可以宕机或断开连接几个小时甚至几天,重新连接后获得更新信息。

5.Q:我怎样知道从服务器与主服务器的最新比较? 换句话说,我怎样知道从服务器复制的最后一个查询的日期?

A:你可以查看SHOW SLAVE STATUS语句的Seconds_Behind_Master列的结果。

6. Q:我怎样强制主服务器阻塞更新直到从服务器同步?

A:使用下面的步骤:

1. 在主服务器上,执行这些语句:

复制代码 代码如下:mysql> FLUSH TABLES WITH READ LOCK;

mysql> SHOW MASTER STATUS;

记录SHOW语句的输出的日志名和偏移量。这些是复制坐标。

2.在从服务器上,发出下面的语句,其中Master_POS_WAIT()函数的参量是前面步骤中的得到的复制坐标值:

mysql> SELECT MASTER_POS_WAIT('log_name', log_offset);

SELECT语句阻塞直到从服务器达到指定的日志文件和偏移量。此时,从服务器与主服务器同步,语句返回。

3.在主服务器上,发出下面的语句允许主服务器重新开始处理更新:

复制代码 代码如下:mysql> UNLOCK TABLES;

7.Q:怎样通过复制来提高系统的性能?

A:你应将一个服务器设置为主服务器并且将所有写指向该服务器。然后根据预算配置尽可能多的从服务器以及栈空间,并且在主服务器和从服务器之间分发读取操作。你也可以用–skip-innodb、–skip-bdb、–low-priority-updates以及–delay-key- write=ALL选项启动从服务器,以便在从服务器端提高速度。在这种情况下,为了提高速度,从服务器使用非事务MyISAM表来代替InnoDB和 BDB表。

相关文章:

贸易保护主义不能解决德国光伏企业的问题

针对德国媒体近期将该国光伏巨头SolarWorld宣布破产一事与中国相关联,甚至指责“中国盗走德国工作”的论调,中国驻德国大使馆经济商务参赞处公使衔参赞王卫东18日向记者表示,SolarWorld作为当初推动欧盟发起对华光伏产品“双反”措施的领头公…

Matlab数据的可视化 -- 平面多边形的着色

本篇微信图文主要介绍Matlab数据可视化方面的内容。fill

ASP.net session 使用总结(2)

Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。举个例子来说,我们可以把已登录用户的用户名放在Session中,这样就能通过判断Session中的某个Key来判断用户是否登录,如果登录…

python re模块_Python re模块

正则表达式元字符说明. 匹配除换行符以外的任意字符^ 匹配字符串的开始$ 匹配字符串的结束[] 用来匹配一个指定的字符类别? 对于前一个字符字符重复0次到1次* 对于前一个字符重复0次到无穷次{} 对于前一个字符重复m次{m,n} 对前一个字符重复为m到n次\d 匹配数字,相…

国外优秀开源PHP建站程序一览

大量的PHP开源(开放源代码/Open Source)应用改变了这个世界,改变了互联网,以下我们总结从数据库到购物、博客等众多类型的开源PHP软件,供网站开发者们参考。 博客:WordPress WordPress是使用PHP开发的著名博…

《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.1 引言...

本节书摘来自华章计算机《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一书中的第2章,第2.1节,作者:[美] 德博拉诺兰(Deborah Nolan)  邓肯坦普朗(Duncan Temple Lang)  更多章…

Matlab数据的可视化 -- 三维特殊图形

本篇微信图文主要介绍Matlab数据可视化方面的内容。plot3,bar3,barh3,scatter3

baidumap api MySQL_百度地图API开发笔记一(基础篇)

什么是百度地图API?百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富、交互性强的地图应用。百度地图API包含了构建地图基本功能的各种接口,提供了诸如本地搜索、路线规划等数据服务。测试js API代码(…

Matlab数据的可视化 -- 三维网格图形

本篇微信图文主要介绍Matlab数据可视化方面的内容。mesh,meshc,meshz

我国网络安全人才培养缺口巨大

近日在武汉举行的国家网络安全宣传周的相关论坛上,我国网络安全人才培养缺口巨大成为与会专家热议的话题。来自中央和地方相关部门、高校研究者、互联网企业代表均认为,我国网络安全人才输出仍距国家、企业需求有较大差距。 去年6月&#xff…

如何写网站的robots.txt和meta name robots的配置

robots.txt基本介绍robots.txt是一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被robots访问的部分,或者指定搜索引擎只收录指定的内容。当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该…

mysql innodb_data_file_path_关于innodb_data_file_path设置

关于innodb_data_file_path设置启动Mysql时报错,无法正常启动,通过日志发有数据文件大小错误,日志如下截图:[ERROR] InnoDB: auto-extending data file /usr/local/mysql/data/ibdata1 is of a different size 768 pages (rounded…

BM提供支持云的量子计算平台,以加速创新

IBM研究院日前首次宣布公众可试用IBM量子处理器。从5月4日开始,IBM通过云服务,使所有有兴趣亲自实践的人们可以接触到量子处理器,帮助科学家和科研社区加速科技创新,并在该领域激发出更多的前沿应用。 这仅仅是量子计算时代的开始…

Matlab数据的可视化 -- 图形格式的设置

本篇微信图文主要介绍Matlab数据可视化方面的内容。title、x,y,zlabel、legend、title、axis、text等

(转)koogra--Excel文件读取利器

koogra是一个.net平台下开源的excel读取程序,可以在开源社区下载它。使用它我们无需office就可以读取excel文件。尽管这个程序已经停止了更新,但是它还是很好用的。下面介绍怎么使用它。下载到该程序的源代码,编译生成Net.SourceForge.Koogra…

mysql切换系统盘命令_mysql常用命令

一、连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码1、例1:连接到本机上的MYSQL。首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好…

Matlab数据的可视化 -- 视角与色彩控制

本篇微信图文主要介绍Matlab数据可视化方面的内容。view,colormap

大数据、智慧城市成生态贵州新名片

2016年中国贵州内陆开放型经济试验区跨境投资贸易洽谈会将于11月10日在贵安新区正式开幕。据主办方介绍,此次洽谈会邀请了来自美国、澳大利亚等24个国家和地区的100多家境外企业,以及1000多家国内企业参加,预计签约总金额或超过1400亿元。 9日…

提升网络安全 十大策略全面巩固企业内网

几乎所有企业对于网络安全的重视程度一下子提高了,纷纷采购防火墙等设备希望堵住来自Internet的不安全因素。然而,Intranet内部的攻击和入侵却依然猖狂。事实证明,公司内部的不安全因素远比外部的危害更恐怖。 大多企业重视提高企业网的边界安…

oracle mysql事物隔离级别_Oracle数据库事物隔离级别

事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题:1、幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新…

Matlab数据的可视化 -- 柱形立体图

本篇微信图文主要介绍Matlab数据可视化方面的内容。cylinder

中国大陆光伏中上游触底反弹 台湾省亦酝酿涨势

太阳能需求在中国十一长假前回温,厂商受限于人力的调配,难以立即将稼动率全开,使得短期供给无法立即上升以呼应需求,因而中国大陆市场从多晶硅至电池片价格出现短暂触底反弹的情形,台湾省厂商也正酝酿涨价动能。 多晶硅…

js版的box2D

http://sourceforge.net/projects/box2d-js/files/ 受不了了 转载于:https://www.cnblogs.com/vilyLei/articles/1522800.html

mysql 安装 se_mysql的安装过程

(1)下载mysql。(2)解压文件到特定位置。我解压到:/home/jim/Software(3)创建Mysql组和用户。mysql中的一个用户名就是链接mysql服务器时指定的用户名,该名字不必与linux登陆名联系起来,但是必须是linux系统下建立的用户。命令为:g…

创新类编辑推荐:Sequence iBPMS平台

创新类编辑推荐是Sequence,一个“iBPMS”工作流管理平台。本文介绍了该产品以及用户是如何成功使用该平台的。 SearchSOA的编辑会定期为创新性和市场影响而表彰应用集成和现代化技术。PNMsoft的Sequence iBPMS是2016年4月份的编辑推荐。 产品名称: Seque…

Matlab数据的可视化 -- 简易表面图

本篇微信图文主要介绍Matlab数据可视化方面的内容。ezsurf

PL/SQL学习笔记-常量变量及数据类型初步

一:常量和变量 开始之前,还是照例做个经典的例子,如下: declare mydate varchar2(16) : hellow world; begindbms_output.put_line(mydate); end; declare是声明部分我在这个部分声明了varchar2类型的变量,名字叫myda…

python邮件发送哪个好_最全总结!聊聊 Python 发送邮件的几种方式

1. 前言邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本、富文本、HTML 等格式的邮件本文将聊聊利用 Python 发送邮件的 3 种方式2. 准备以 126 邮箱为例,在编码…

数据库与操作系统时区更改

ORACLE 11G 新部署的环境,刚使用GOLDENGATE 进行完数据迁移和同步,发现ORACLE 自动收集的任务时间  并不是设定的晚上22点启动。检查AIX 时区发现设置的CDT ,数据库的TIMEZONE 是CST6CDT,与系统管理  员沟通,他答复…

Matlab数据的可视化 -- 三维表面图

本篇微信图文主要介绍Matlab数据可视化方面的内容。surf