summaryrefslogtreecommitdiff
path: root/Docs
diff options
context:
space:
mode:
Diffstat (limited to 'Docs')
-rw-r--r--Docs/Makefile.am11
-rw-r--r--Docs/manual.texi856
2 files changed, 649 insertions, 218 deletions
diff --git a/Docs/Makefile.am b/Docs/Makefile.am
index b9fa5401a37..cd539277c70 100644
--- a/Docs/Makefile.am
+++ b/Docs/Makefile.am
@@ -69,12 +69,17 @@ manual.pdf: manual.texi
touch $@
# Target to produce NuSphere Manual
-print-manual.pdf: manual.texi
- cat manual.texi | sed -e 's|@image{[^}]*} *||g' > manual-tmp.texi; \
+nusphere.pdf: manual.texi
+ cat manual.texi \
+ | sed -e 's/@example/@smallexample/g' \
+ -e 's/@end example/@end smallexample/g' \
+ -e 's/@c ifnusphere //g' \
+ -e 's|@image{[^}]*} *||g' \
+ > manual-tmp.texi; \
pdftex --interaction=nonstopmode '\input manual-tmp.texi'; \
pdftex --interaction=nonstopmode '\pdfcompresslevel=9' \
'\input manual-tmp.texi'; \
- mv manual-tmp.pdf $@; \
+ mv manual-tmp.pdf nusphere.pdf; \
rm -f manual-tmp.* ; \
touch $@
diff --git a/Docs/manual.texi b/Docs/manual.texi
index 653a138a604..0c7e83a78e9 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -8,15 +8,24 @@
@c *********************************************************
@c
@c %**start of header
+
+@c there's a better way to do this.. i just don't know it yet
+@c sed will remove the "@c ifnusphere " to make this valid
+@c ifnusphere @set nusphere 1
+
@setfilename mysql.info
+
@c We want the types in the same index
@syncodeindex tp fn
+
@c Get version info. This file is generated by the Makefile!!
@include include.texi
+
@ifclear tex-debug
@c This removes the black squares in the right margin
@finalout
@end ifclear
+
@c Set background for HTML
@set _body_tags BGCOLOR=silver TEXT=#000000 LINK=#101090 VLINK=#7030B0
@c Set some style elements for the manual in HTML form. 'suggested'
@@ -24,11 +33,29 @@
@c lime, maroon, navy, olive, purple, red, silver, teal, white, and
@c yellow. From Steeve Buehler <ahr@YogElements.com>
@set _extra_head <style> code {color:purple} tt {color:green} samp {color:navy} pre {color:maroon} </style>
+
@settitle @strong{MySQL} Reference Manual for version @value{mysql_version}.
+
@c We want single-sided heading format, with chapters on new pages. To
@c get double-sided format change 'on' below to 'odd'
+@ifclear nusphere
@setchapternewpage on
+@end ifclear
+
+@ifset nusphere
+@setchapternewpage odd
+@end ifset
+
@paragraphindent 0
+
+@ifset nusphere
+@smallbook
+@end ifset
+
+@ifset nusphere
+@setcontentsaftertitlepage
+@end ifset
+
@c %**end of header
@ifinfo
@@ -56,8 +83,17 @@ END-INFO-DIR-ENTRY
@c change this to double if you want formatting for double-sided
@c printing
@headings single
+
+@ifclear nusphere
@everyheading @thispage @| @| @thischapter
@everyfooting @| @| Version: @value{mysql_version} Printed: @today{}
+@end ifclear
+
+@ifset nusphere
+@oddheading @thischapter @| @| @thispage
+@evenheading @thispage @| @| @thischapter
+@end ifset
+
@end iftex
@node Top, Introduction, (dir), (dir)
@@ -334,6 +370,8 @@ MySQL language reference
* CHECK TABLE:: @code{CHECK TABLE} syntax
* ANALYZE TABLE:: @code{ANALYZE TABLE} syntax
* REPAIR TABLE:: @code{REPAIR TABLE} syntax
+* BACKUP TABLE:: @code{BACKUP TABLE} syntax
+* RESTORE TABLE:: @code{RESTORE TABLE} syntax
* DELETE:: @code{DELETE} syntax
* SELECT:: @code{SELECT} syntax
* JOIN:: @code{JOIN} syntax
@@ -506,6 +544,7 @@ Replication in MySQL
* Replication Features:: Replication Features
* Replication Options:: Replication Options in my.cnf
* Replication SQL:: SQL Commands related to replication
+* Replication FAQ:: Frequently asked questions about replication
Getting maximum performance from MySQL
@@ -1279,7 +1318,7 @@ in bed or while you travel. Here is a list of books about @strong{MySQL} (in
English):
@multitable @columnfractions .3 .7
-@item Title @tab @uref{http://www2.newriders.com/cfm/prod_book.cfm?RecordID=584,MySQL}
+@item Title @tab @uref{http://shop.barnesandnoble.com/booksearch/isbnInquiry.asp?userid=2I7CR56GYQ&mscssid=7M1HKEME12MW9MFS547RKBSQX1N4FVLD&isbn=0735709211,MySQL}
@item Publisher @tab New Riders
@item Author @tab Paul DuBois
@item Pub Date @tab 1st Edition December 1999
@@ -1337,7 +1376,7 @@ and PHP's @strong{MySQL}-related functions
@end itemize
@multitable @columnfractions .3 .7
-@item Title @tab @uref{http://www.oreilly.com/catalog/msql/noframes.html,MySQL & mSQL}
+@item Title @tab @uref{http://shop.barnesandnoble.com/booksearch/isbnInquiry.asp?userid=2I7CR56GYQ&mscssid=7M1HKEME12MW9MFS547RKBSQX1N4FVLD&isbn=1565924347,MySQL & mSQL}
@item Publisher @tab O'Reilly
@item Authors @tab Randy Jay Yarger, George Reese & Tim King
@item Pub Date @tab 1st Edition July 1999
@@ -2345,21 +2384,21 @@ from the local @strong{MySQL} list.
The following @strong{MySQL} mailing lists exist:
@table @code
-@item announce (@email{announce-subscribe@@lists.mysql.com})
+@item @uref{mailto:announce-subscribe@@lists.mysql.com, announce}
This is for announcement of new versions of @strong{MySQL} and related
programs. This is a low volume list that we think all @strong{MySQL}
users should be on.
-@item mysql (@email{mysql-subscribe@@lists.mysql.com})
+@item @uref{mailto:mysql-subscribe@@lists.mysql.com, mysql}
The main list for general @strong{MySQL} discussion. Please note that some
topics are better discussed on the more-specialized lists. If you post to the
wrong list, you may not get an answer!
-@item mysql-digest (@email{mysql-digest-subscribe@@lists.mysql.com})
+@item @uref{mailto:mysql-digest-subscribe@@lists.mysql.com, mysql-digest}
The @code{mysql} list in digest form. That means you get all individual
messages, sent as one large mail message once a day.
-@item bugs (@email{bugs-subscribe@@lists.mysql.com})
+@item @uref{mailto:bugs-subscribe@@lists.mysql.com, bugs}
On this list you should only post a full, repeatable bug report, using
the @code{mysqlbug} script (if you are running on Windows, you should
include a description of the operating system and the @strong{MySQL} version).
@@ -2371,45 +2410,54 @@ this list will be corrected or documented in the next @strong{MySQL} release!
If there are only small code changes involved, we will also post a patch that
fixes the problem.
-@item bugs-digest (@email{bugs-digest-subscribe@@lists.mysql.com})
+@item @uref{mailto:bugs-digest-subscribe@@lists.mysql.com, bugs-digest}
The @code{bugs} list in digest form
-@item developer (@email{developer-subscribe@@lists.mysql.com})
+@item @uref{mailto:developer-subscribe@@lists.mysql.com, developer}
+This list has been depreciated in favor of the
+@uref{mailto:internals-subscribe@@lists.mysql.com, internals} list (below).
+
+@item @uref{mailto:developer-digest-subscribe@@lists.mysql.com, developer-digest}
+This list has been depreciated in favor of the
+@uref{mailto:internals-digest-subscribe@@lists.mysql.com, internals-digest} list
+(below).
+
+@item @uref{mailto:internals-subscribe@@lists.mysql.com, internals}
A list for people who work on the @strong{MySQL} code. On this list one
can also discuss @strong{MySQL} development and post patches.
-@item developer-digest (@email{developer-digest-subscribe@@lists.mysql.com})
-A digest version of the @code{developer} list.
+@item @uref{mailto:internals-digest-subscribe@@lists.mysql.com, internals-digest}
+A digest version of the @uref{mailto:internals-subscribe@@lists.mysql.com, internals} list.
-@item java (@email{java-subscribe@@lists.mysql.com})
+@item @uref{mailto:java-subscribe@@lists.mysql.com, java}
Discussion about @strong{MySQL} and Java. Mostly about the JDBC drivers.
-@item java-digest (@email{java-digest-subscribe@@lists.mysql.com})
+@item @uref{mailto:java-digest-subscribe@@lists.mysql.com, java-digest}
A digest version of the @code{java} list.
-@item win32 (@email{win32-subscribe@@lists.mysql.com})
+@item @uref{mailto:win32-subscribe@@lists.mysql.com, win32}
All things concerning @strong{MySQL} on Microsoft operating systems such as
Win95, Win98, NT and Win2000.
-@item win32-digest (@email{win32-digest-subscribe@@lists.mysql.com})
+@item @uref{mailto:win32-digest-subscribe@@lists.mysql.com, win32-digest}
A digest version of the @code{win32} list.
-@item myodbc (@email{myodbc-subscribe@@lists.mysql.com})
+@item @uref{mailto:myodbc-subscribe@@lists.mysql.com, myodbc}
All things concerning connecting to @strong{MySQL} with ODBC.
-@item myodbc-digest (@email{myodbc-digest-subscribe@@lists.mysql.com})
+@item @uref{mailto:myodbc-digest-subscribe@@lists.mysql.com, myodbc-digest}
A digest version of the @code{myodbc} list.
-@item plusplus (@email{plusplus-digest-subscribe@@lists.mysql.com})
+@item @uref{mailto:plusplus-subscribe@@lists.mysql.com, plusplus}
All things concerning programming with the C++ API to @strong{MySQL}.
-@item plusplus-digest (@email{plusplus-digest-subscribe@@lists.mysql.com})
+@item @uref{mailto:plusplus-digest-subscribe@@lists.mysql.com, plusplus-digest}
A digest version of the @code{plusplus} list.
-@item msql-mysql-modules (@email{msql-mysql-modules-subscribe@@lists.mysql.com})
+@item @uref{mailto:msql-mysql-modules-subscribe@@lists.mysql.com, msql-mysql-modules}
A list about the Perl support in @strong{MySQL}.
-@item msql-mysql-modules-digest (@email{msql-mysql-modules-digest-subscribe@@lists.mysql.com})
+@item @uref{mailto:msql-mysql-modules-digest-subscribe@@lists.mysql.com, msql-mysql-modules-digest}
A digest version of the @code{msql-mysql-modules} list.
@end table
@@ -3139,21 +3187,31 @@ with your company information and ask us to bill you.
@node Contact information, , Payment information, Cost
@subsection Contact information
-For commercial licensing, or if you have any questions about any of the
-information in this section, please contact the @strong{MySQL} licensing
+For commercial licensing, please contact the @strong{MySQL} licensing
team. The much preferred method is by E-Mail to
-@email{mysql-licensing@@mysql.com}. Fax is also possible but handling of
+@email{licensing@@mysql.com}. Fax is also possible but handling of
these may take much longer (Fax +46-8-729 69 05).
-@example
-David Axmark
-Detron HB
-Kungsgatan 65 B
-753 21 UPPSALA
-SWEDEN
-Voice Phone +46-18-10 22 80
-(Timezone GMT+1. Swedish and English spoken)
-@end example
+For general information inquires, please send mail to @email{info@@mysql.com}.
+
+If you represent a business that is interested in partnering with @strong{MySQL},
+please send mail to @email{partner@@mysql.com}.
+
+If you are interested in placing a banner advertisement on our website, please send
+mail to @email{advertising@@mysql.com}.
+
+If you are interested in any of the jobs listed in our
+@uref{http://www.mysql.com/development/jobs/, jobs} section, please send mail
+to @email{jobs@@mysql.com}.
+
+For technical questions about @strong{MySQL}, please direct your question to the
+appropriate @uref{http://www.mysql.com/documentation/lists.html, mailing list}.
+If this does not answer your question, perhaps it would better suit you to
+@uref{https://order.mysql.com/, order} one of our
+@uref{http://www.mysql.com/support/arrangements/types.html, support contracts}.
+
+For questions or comments about the workings or content of this website, please
+send mail to @email{webmaster@@mysql.com}.
@cindex Support, types
@cindex Types of support
@@ -3413,6 +3471,15 @@ source distribution.
Check the @uref{http://www.mysql.com/, @strong{MySQL} home page} for
information about the current version and for downloading instructions.
+Our main download mirror is located at:
+
+@uref{http://download.sourceforge.net/mirrors/mysql/, http://download.sourceforge.net/mirrors/mysql/}
+
+If you are interested in becoming a @strong{MySQL} mirror site, you may anonymously
+rsync with: @code{rsync://download.sourceforge.net/mysql/}. Please send mail to
+@email{webmaster@@mysql.com} notifying us of your mirror to be added to the list
+below.
+
If you have problems downloading from our main site, try using one of the
mirrors listed below.
@@ -3426,40 +3493,46 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@item
@c EMAIL: sl@iuinfo.tuwien.ac.at (Tony Sprinzl)
-@image{Flags/austria} Austria [Univ. of Technology/Vienna] @
+@c @image{Flags/austria}
+Austria [Univ. of Technology/Vienna] @
@uref{http://gd.tuwien.ac.at/db/mysql/, WWW}
@uref{ftp://gd.tuwien.ac.at/db/mysql/, FTP}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: delian@naturella.com (Delian Delchev)
-@image{Flags/bulgaria} Bulgaria [Naturella] @
-@uref{http://archive.nat.bg/pub/mirror/mysql/, WWW}
-@uref{ftp://ftp.ntrl.net/pub/mirror/mysql/, FTP}
+@c @image{Flags/bulgaria} Bulgaria [Naturella] @
+@c @uref{http://archive.nat.bg/pub/mirror/mysql/, WWW}
+@c @uref{ftp://ftp.ntrl.net/pub/mirror/mysql/, FTP}
-@item
+@c @item
@c Added: 990614
+@c Not ok 20000919; Out of date (Matt)
@c EMAIL: vuksan@veus.hr (Vladimir Vuksan)
-@image{Flags/croatia} Croatia [HULK] @
-@uref{http://ftp.linux.hr/pub/mysql/, WWW}
-@uref{ftp://ftp.linux.hr/pub/mysql/, FTP}
+@c @image{Flags/croatia} Croatia [HULK] @
+@c @uref{http://ftp.linux.hr/pub/mysql/, WWW}
+@c @uref{ftp://ftp.linux.hr/pub/mysql/, FTP}
@item
@c Added: 990614
@c EMAIL: kas@informatics.muni.cz (Jan Kasprzak)
-@image{Flags/czech-republic} Czech Republic [Masaryk University in Brno] @
+@c @image{Flags/czech-republic}
+Czech Republic [Masaryk University in Brno] @
@uref{http://mysql.linux.cz/index.html, WWW}
@uref{ftp://ftp.fi.muni.cz/pub/mysql/, FTP}
-@item
+@c @item
@c Added: 990920
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: <radek@sopik.cz> (Radek Libovicky)
-@image{Flags/czech-republic} Czech Republic [www.sopik.cz] @
-@uref{http://www.mysql.cz/, WWW}
+@c @image{Flags/czech-republic} Czech Republic [www.sopik.cz] @
+@c @uref{http://www.mysql.cz/, WWW}
@item
@c Added: 000418
@c EMAIL: <feela@ipex.cz> (Ondrej Feela Filip)
-@image{Flags/czech-republic} Czech Republic [www.gin.cz] @
+@c @image{Flags/czech-republic}
+Czech Republic [www.gin.cz] @
@uref{http://mysql.gin.cz/, WWW}
@uref{ftp://ftp.gin.cz/pub/MIRRORS/www.mysql.com/, FTP}
@@ -3467,12 +3540,14 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c removed 991020 (no DNS entry). New name 991026. Added 991121
@c Statistics at http://mirror.borsen.dk/
@c EMAIL: mirrorman@borsen.dk (Michael Kyed)
-@image{Flags/denmark} Denmark [Borsen] @
+@c @image{Flags/denmark}
+Denmark [Borsen] @
@uref{ http://mysql.borsen.dk/, WWW}
@item
@c EMAIL: mkp@socsci.auc.dk (Martin Kasper Petersen)
-@image{Flags/denmark} Denmark [SunSITE] @
+@c @image{Flags/denmark}
+Denmark [SunSITE] @
@uref{http://SunSITE.auc.dk/mysql/, WWW}
@uref{ftp://SunSITE.auc.dk/pub/databases/mysql/, FTP}
@@ -3484,55 +3559,64 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@item
@c EMAIL: tonu@spamm.ee (Tõnu Samuel)
-@image{Flags/estonia} Estonia [OKinteractive] @
+@c @image{Flags/estonia}
+Estonia [OKinteractive] @
@uref{http://mysql.mirror.ok.ee, WWW}
-@item
+@c @item
@c Changed 990531
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: Steeve.Devergne@minet.net (Steeve Devergne)
-@image{Flags/france} France [minet] @
-@uref{http://www.minet.net/devel/mysql/, WWW}
+@c @image{Flags/france} France [minet] @
+@c @uref{http://www.minet.net/devel/mysql/, WWW}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: Jaakko.Hyvatti@eunet.fi
-@image{Flags/finland} Finland [EUnet] @
-@uref{http://mysql.eunet.fi/, WWW}
+@c @image{Flags/finland} Finland [EUnet] @
+@c @uref{http://mysql.eunet.fi/, WWW}
-@item
+@c @item
@c Added 990829
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: tomi.hakala@clinet.fi (Tomi Hakala)
-@image{Flags/finland} Finland [clinet] @
-@uref{ftp://ftp.clinet.fi/mirrors/ftp.mysql.org/pub/mysql/, FTP}
+@c @image{Flags/finland} Finland [clinet] @
+@c @uref{ftp://ftp.clinet.fi/mirrors/ftp.mysql.org/pub/mysql/, FTP}
@item
@c Added 981208
@c EMAIL: noel@uni-bonn.de (Noel Koethe)
-@image{Flags/germany} Germany [Bonn University, Bonn] @
+@c @image{Flags/germany}
+Germany [Bonn University, Bonn] @
@uref{http://www.wipol.uni-bonn.de/MySQL//, WWW}
@uref{ftp://ftp.wipol.uni-bonn.de/pub/mirror/MySQL/, FTP}
@item
@c EMAIL: th@rz.fh-wolfenbuettel.de (Thorsten Ludewig)
-@image{Flags/germany} Germany [Wolfenbuettel] @
+@c @image{Flags/germany}
+Germany [Wolfenbuettel] @
@uref{http://www.fh-wolfenbuettel.de/ftp/pub/database/mysql/, WWW}
@uref{ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/, FTP}
-@item
+@c @item
@c Ok 980114. Removed 981208 (down > 3 days) ok 981214
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: straub@gks.de (Hans-Peter Straub)
-@image{Flags/germany} Germany [Staufen] @
-@uref{http://mysql.staufen.de/, WWW}
+@c @image{Flags/germany} Germany [Staufen] @
+@c @uref{http://mysql.staufen.de/, WWW}
-@item
+@c @item
@c Added 990614
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: thomas.rohde@ecrc.de (Thomas Rohde)
-@image{Flags/germany} Germany [Cable & Wireless] @
-@uref{ftp://ftp.ecrc.net/pub/database/mysql/, FTP}
+@c @image{Flags/germany} Germany [Cable & Wireless] @
+@c @uref{ftp://ftp.ecrc.net/pub/database/mysql/, FTP}
@item
@c Added 981208
@c EMAIL: christias@noc.ntua.gr (Panagiotis Christias)
-@image{Flags/greece} Greece [NTUA, Athens] @
+@c @image{Flags/greece}
+Greece [NTUA, Athens] @
@uref{http://www.ntua.gr/mysql/, WWW}
@uref{ftp://ftp.ntua.gr/pub/databases/mysql/, FTP}
@@ -3543,11 +3627,12 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c @uref{http://xenia.sote.hu/ftp/mirrors/www.mysql.com/, WWW}
@c @uref{ftp://xenia.sote.hu/pub/mirrors/www.mysql.com/,FTP}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: mirrors@gm.is (Tomas Edwardsson)
-@image{Flags/iceland} Island [GM] @
-@uref{http://mysql.gm.is/, WWW}
-@uref{ftp://ftp.gm.is/pub/mysql, WWW}
+@c @image{Flags/iceland} Island [GM] @
+@c @uref{http://mysql.gm.is/, WWW}
+@c @uref{ftp://ftp.gm.is/pub/mysql, WWW}
@c @item
@c Out of date 990906
@@ -3563,20 +3648,23 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@item
@c EMAIL: irena@yacc.it
-@image{Flags/italy} Italy [Teta Srl] @
+@c @image{Flags/italy}
+Italy [Teta Srl] @
@uref{http://www.teta.it/mysql/, WWW}
-@item
+@c @item
@c Added 991121
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: nick@iol.ie (Nick Hilliard)
-@image{Flags/ireland} Ireland [Ireland On-Line/Dublin] @
-@uref{http://mysql.iol.ie, WWW}
-@uref{ftp://ftp.iol.ie/pub/mysql, FTP}
+@c @image{Flags/ireland} Ireland [Ireland On-Line/Dublin] @
+@c @uref{http://mysql.iol.ie, WWW}
+@c @uref{ftp://ftp.iol.ie/pub/mysql, FTP}
@item
@c EMAIL: W.Sylwestrzak@icm.edu.pl (Wojtek Sylwestrzak)
@c mirroring nightly at 05:25
-@image{Flags/poland} Poland [Sunsite] @
+@c @image{Flags/poland}
+Poland [Sunsite] @
@uref{http://sunsite.icm.edu.pl/mysql/, WWW}
@uref{ftp://sunsite.icm.edu.pl/pub/unix/mysql/, FTP}
@@ -3586,17 +3674,19 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c @image{Flags/portugal} Portugal [IP] @
@c @uref{http://mysql.ip.pt, WWW}
-@item
+@c @item
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: Equipa de suporte do Leirianet <support@leirianet.pt>
-@image{Flags/portugal} Portugal [lerianet] @
-@uref{http://mysql.leirianet.pt, WWW}
-@uref{ftp://ftp.leirianet.pt/pub/mysql/,FTP}
+@c @image{Flags/portugal} Portugal [lerianet] @
+@c @uref{http://mysql.leirianet.pt, WWW}
+@c @uref{ftp://ftp.leirianet.pt/pub/mysql/,FTP}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: kuzmin@dn.ru (Roma Kuzmin)
-@image{Flags/russia} Russia [DirectNet] @
-@uref{http://mysql.directnet.ru, WWW}
-@uref{ftp://ftp.dn.ru/pub/MySQL, FTP}
+@c @image{Flags/russia} Russia [DirectNet] @
+@c @uref{http://mysql.directnet.ru/, WWW}
+@c @uref{ftp://ftp.dn.ru/pub/MySQL/, FTP}
@c @item
@c down 990113
@@ -3606,27 +3696,31 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c @uref{http://mysql.cityline.ru, WWW}
@c EMAIL: bar@izhcom.ru (Alexander I Barkov)
-@item
-@image{Flags/russia} Russia [IZHCOM] @
-@uref{http://mysql.udm.net/, WWW}
-@uref{ftp://ftp.izhcom.ru/pub/mysql/,FTP}
+@c @item
+@c Not ok 20000919; Non-existent (Matt)
+@c @image{Flags/russia} Russia [IZHCOM] @
+@c @uref{http://mysql.udm.net/, WWW}
+@c @uref{ftp://ftp.izhcom.ru/pub/mysql/,FTP}
@item
@c Added 990507
@c EMAIL: demon@gpad.ac.ru (Dima Sivachenko)
-@image{Flags/russia} Russia [Scientific Center/Chernogolovka] @
+@c @image{Flags/russia}
+Russia [Scientific Center/Chernogolovka] @
@uref{ftp://ftp.chg.ru/pub/databases/mysql/, FTP}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: sebi@dnttm.ro (Sebastian DEAC)
-@image{Flags/romania} Romania [Timisoara] @
-@uref{http://www.dnttm.ro/mysql, WWW}
-@uref{ftp://ftp.dnttm.ro/pub/mysql, FTP}
+@c @image{Flags/romania} Romania [Timisoara] @
+@c @uref{http://download.dnttm.ro/mysql, WWW}
+@c @uref{ftp://ftp.dnttm.ro/pub/mysql, FTP}
@item
@c EMAIL: tim@lbi.ro (Bogdan Surdu)
-@image{Flags/romania} Romania [Bucharest] @
-@uref{http://www.lbi.ro/MySQL, WWW}
+@c @image{Flags/romania}
+Romania [Bucharest] @
+@uref{http://www.lbi.ro/MySQL/, WWW}
@uref{ftp://ftp.lbi.ro/mirrors/ftp.tcx.se, FTP}
@c @item
@@ -3635,33 +3729,38 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c @image{Flags/spain} Spain [MasterD]
@c @uref{http://mysql.masterd.es, WWW}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: Patrik.Karen@sdi.slu.se (Patrik Karen)
@c ftp -> remove old files
-@image{Flags/sweden} Sweden [Sunet] @
-@uref{http://ftp.sunet.se/pub/unix/databases/relational/mysql/, WWW}
-@uref{ftp://ftp.sunet.se/pub/unix/databases/relational/mysql/, FTP}
+@c @image{Flags/sweden} Sweden [Sunet] @
+@c @uref{http://ftp.sunet.se/pub/unix/databases/relational/mysql/, WWW}
+@c @uref{ftp://ftp.sunet.se/pub/unix/databases/relational/mysql/, FTP}
@item
@c EMAIL: archive@sunsite.cnlab-switch.ch (Thomas Lenggenhager)
-@image{Flags/switzerland} Switzerland [Sunsite] @
+@c @image{Flags/switzerland}
+Switzerland [Sunsite] @
@uref{http://sunsite.cnlab-switch.ch/ftp/mirror/mysql/, WWW}
@uref{ftp://sunsite.cnlab-switch.ch/mirror/mysql/, FTP}
@c @item
-@c @c simon@oyster.co.uk (Simon Gornall)
+@c Not ok 20000919; Non-existent (Matt)
+@c simon@oyster.co.uk (Simon Gornall)
@c @image{Flags/great-britain} UK [Oyster/UK] @
@c @uref{ftp://ftp.oyster.co.uk/pub/mysql, FTP}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c gareth@omnipotent.net (Gareth Watts)
-@image{Flags/great-britain} UK [Omnipotent/UK] @
-@uref{http://mysql.omnipotent.net/, WWW}
-@uref{ftp://mysql.omnipotent.net/, FTP}
+@c @image{Flags/great-britain} UK [Omnipotent/UK] @
+@c @uref{http://mysql.omnipotent.net/, WWW}
+@c @uref{ftp://mysql.omnipotent.net/, FTP}
@item
@c keet@mordor.plig.net (Christiaan Keet)
-@image{Flags/great-britain} UK [PLiG/UK] @
+@c @image{Flags/great-britain}
+UK [PLiG/UK] @
@uref{http://ftp.plig.org/pub/mysql/, WWW}
@uref{ftp://ftp.plig.org/pub/mysql/, FTP}
@@ -3670,17 +3769,19 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c @image{Flags/great-britain} UK [MicroMuse] @
@c @uref{ftp://ftp.micromuse.co.uk/pub/packages/unix/databases/mysql/, FTP}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c lmjm@icparc.ic.ac.uk (Lee McLoughlin)
-@image{Flags/great-britain} UK [SunSITE] @
-@uref{http://sunsite.org.uk/packages/mysql/, WWW}
-@uref{ftp://sunsite.org.uk/packages/mysql/, FTP}
+@c @image{Flags/great-britain} UK [SunSITE] @
+@c @uref{http://sunsite.org.uk/packages/mysql/, WWW}
+@c @uref{ftp://sunsite.org.uk/packages/mysql/, FTP}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c sander@paco.net (Alexander Ivanov)
-@image{Flags/ukraine} Ukraine [PACO] @
-@uref{http://mysql.paco.net.ua, WWW}
-@uref{ftp://mysql.paco.net.ua/, FTP}
+@c @image{Flags/ukraine} Ukraine [PACO] @
+@c @uref{http://mysql.paco.net.ua, WWW}
+@c @uref{ftp://mysql.paco.net.ua/, FTP}
@end itemize
@@ -3696,27 +3797,31 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@item
@c Ok 980109
@c EMAIL: wojtek@tryc.on.ca (Wojtjeck Tryc)
-@image{Flags/canada} Canada [Tryc] @
+@c @image{Flags/canada}
+Canada [Tryc] @
@uref{http://web.tryc.on.ca/mysql/, WWW}
-@item
+@c @item
@c not updated 990218. Added again 990918
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: rhooper@cyberus.ca (Roy Hooper)
-@image{Flags/canada} Canada [Cyberus] @
-@uref{http://mysql.cyberus.ca/, WWW}
-@uref{ftp://mysql.cyberus.ca/, FTP}
+@c @image{Flags/canada} Canada [Cyberus] @
+@c @uref{http://mysql.cyberus.ca/, WWW}
+@c @uref{ftp://mysql.cyberus.ca/, FTP}
@item
@c EMAIL: mleber@he.net (Mike Leber)
@c Added 980312
-@image{Flags/usa} USA [Hurricane Electric/San Jose] @
+@c @image{Flags/usa}
+USA [Hurricane Electric/San Jose] @
@uref{http://mysql.he.net, WWW}
-@item
+@c @item
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: meltzer@icsnet.com (Jeffrey Meltzer)
@c Added 000108
-@image{Flags/usa} USA [Meltzer/New York State] @
-@uref{ftp://ftp.meltzer.org/pub/mysql/, FTP}
+@c @image{Flags/usa} USA [Meltzer/New York State] @
+@c @uref{ftp://ftp.meltzer.org/pub/mysql/, FTP}
@c @item
@c No such directory 990830
@@ -3756,14 +3861,16 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@item
@c EMAIL: tcobb@staff.circle.net (Troy Cobb)
-@image{Flags/usa} USA [Circle Net/North Carolina] @
+@c @image{Flags/usa}
+USA [Circle Net/North Carolina] @
@uref{http://www.mysql.net, WWW}
-@item
+@c @item
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: paul@gina.net (Paul Vining)
@c mirrors ftp.sunet.se
-@image{Flags/usa} USA [Gina net/Florida] @
-@uref{http://www.gina.net/mysql/, WWW}
+@c @image{Flags/usa} USA [Gina net/Florida] @
+@c @uref{http://www.gina.net/mysql/, WWW}
@c Out of date 2000-01-08 (Not updated since 1999-10)
@c @item
@@ -3772,20 +3879,23 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c @image{Flags/usa} USA [pingzero/Los Angeles] @
@c @uref{http://mysql.pingzero.net/, WWW}
-@item
+@c @item
+@c Not ok 20000919; Out of date (Matt)
@c EMAIL: ftpkeeper@mirror.sit.wisc.edu
-@image{Flags/usa} USA [Wisconsin University/Wisconsin] @
-@uref{http://mirror.sit.wisc.edu/mysql/, WWW}
-@uref{ftp://mirror.sit.wisc.edu/mirrors/mysql/, FTP}
+@c @image{Flags/usa} USA [Wisconsin University/Wisconsin] @
+@c @uref{http://mirror.sit.wisc.edu/mysql/, WWW}
+@c @uref{ftp://mirror.sit.wisc.edu/mirrors/mysql/, FTP}
-@item
+@c @item
+@c Not ok 20000919; Out of date (Matt)
@c EMAIL: ftp-admin@digex.net
-@image{Flags/usa} USA [DIGEX] @
-@uref{ftp://ftp.digex.net/pub/packages/database/mysql/, FTP}
+@c @image{Flags/usa} USA [DIGEX] @
+@c @uref{ftp://ftp.digex.net/pub/packages/database/mysql/, FTP}
@item
@c EMAIL: andrew.sawyers@thelinuxstore.com
-@image{Flags/usa} USA [LinuxWired/Scottsdale, AZ] @
+@c @image{Flags/usa}
+USA [LinuxWired/Scottsdale, AZ] @
@uref{http://mysql.linuxwired.net/, WWW}
@uref{ftp://ftp.linuxwired.net/pub/mirrors/mysql/, FTP}
@@ -3794,15 +3904,17 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@strong{South America:}
@itemize @bullet
-@item
+@c @item
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: gaiser@matrix.com.br (Roberto Gaiser)
-@image{Flags/brazil} Brazil [Matrix] @
-@uref{http://mysql.matrix.com.br, WWW}
+@c @image{Flags/brazil} Brazil [Matrix] @
+@c @uref{http://mysql.matrix.com.br, WWW}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c jpabuyer@vision.cl
-@image{Flags/chile} Chile [Vision] @
-@uref{http://mysql.vision.cl/, WWW}
+@c @image{Flags/chile} Chile [Vision] @
+@c @uref{http://mysql.vision.cl/, WWW}
@c @item
@c Removed 990730
@@ -3815,25 +3927,29 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@strong{Asia:}
@itemize @bullet
-@item
+@c @item
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: mirnshi@netchina.com.cn (Meng Lingbo)
-@image{Flags/china} China [Freecode] @
-@uref{http://mysql.freecode.com.cn, WWW}
+@c @image{Flags/china} China [Freecode] @
+@c @uref{http://mysql.freecode.com.cn, WWW}
@item
@c EMAIL: Vincent_Fong@innovator.com.hk (Vincent Fong)
-@image{Flags/china} China [Hong Kong] @
+@c @image{Flags/china}
+China [Hong Kong] @
@uref{http://mysql.islnet.net, WWW}
-@item
+@c @item
+@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: george@netfirm.net (Hongsheng Zhu)
-@image{Flags/china} China [Netfirm] @
-@uref{http://mysql.netfirm.net, WWW}
+@c @image{Flags/china} China [Netfirm] @
+@c @uref{http://mysql.netfirm.net, WWW}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: ahmlhs@nmsvr.chosun.com (Ho-sun Lee)
-@image{Flags/south-korea} Korea [KREONet] @
-@uref{http://linux.kreonet.re.kr/mysql/, WWW}
+@c @image{Flags/south-korea} Korea [KREONet] @
+@c @uref{http://linux.kreonet.re.kr/mysql/, WWW}
@c @item
@c ftp -> remove old files
@@ -3844,7 +3960,8 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@item
@c Ok 980805
@c EMAIL: takeshi@SoftAgency.co.jp
-@image{Flags/japan} Japan [Soft Agency] @
+@c @image{Flags/japan}
+Japan [Soft Agency] @
@uref{http://www.softagency.co.jp/MySQL, WWW}
@c @item
@@ -3854,12 +3971,13 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c @uref{http://www.happysize.co.jp/mysql/, WWW}
@c @uref{ftp://ftp.happysize.co.jp/pub/mysql/, FTP}
-@item
+@c @item
@c Ok 981204
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: hiroyuki@nucba.ac.jp (hiroyuki kurimoto)
-@image{Flags/japan} Japan [Nagoya Syouka University] @
-@uref{http://mirror.nucba.ac.jp/mirror/mysql, WWW}
-@uref{ftp://mirror.nucba.ac.jp/mirror/mysql, FTP}
+@c @image{Flags/japan} Japan [Nagoya Syouka University] @
+@c @uref{http://mirror.nucba.ac.jp/mirror/mysql, WWW}
+@c @uref{ftp://mirror.nucba.ac.jp/mirror/mysql, FTP}
@c @item
@c Removed 990308
@@ -3870,21 +3988,24 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@item
@c EMAIL: csy@hjc.edu.sg
-@image{Flags/singapore} Singapore [HJC] @
+@c @image{Flags/singapore}
+Singapore [HJC] @
@uref{http://mysql.hjc.edu.sg, WWW}
@uref{ftp://ftp.hjc.edu.sg/mysql, FTP}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c 991118: Removed because a user complained about that the page contains
@c nothing about MySQL. 991119: Added again because it is a mirror again
@c EMAIL: dean@ht.net.tw (Dean Lin)
-@image{Flags/taiwan} Taiwan [HT] @
-@uref{http://mysql.ht.net.tw, WWW}
+@c @image{Flags/taiwan} Taiwan [HT] @
+@c @uref{http://mysql.ht.net.tw, WWW}
-@item
+@c @item
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: linda@ttn.com.tw (Linda Hu)
-@image{Flags/taiwan} Taiwan [TTN] @
-@uref{http://mysql.ttn.net, WWW}
+@c @image{Flags/taiwan} Taiwan [TTN] @
+@c @uref{http://mysql.ttn.net, WWW}
@c @item
@c Ok 980321 No connect -> removed 990730
@@ -3919,7 +4040,8 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@item
@c Added 980610
@c EMAIL: jason@dstc.edu.au (Jason Andrade)
-@image{Flags/australia} Australia [AARNet/Queensland] @
+@c @image{Flags/australia}
+Australia [AARNet/Queensland] @
@uref{http://mirror.aarnet.edu.au/mysql, WWW}
@uref{ftp://mirror.aarnet.edu.au/pub/mysql, FTP}
@@ -3930,18 +4052,20 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@c @uref{http://ftp.tas.gov.au/mysql, WWW}
@c @uref{ftp://ftp.tas.gov.au/pub/mysql, FTP}
-@item
+@c @item
@c Ok 980623
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: samh@bluep.com (Sam Hadzajlic)
-@image{Flags/australia} Australia [Blue Planet/Melbourne] @
-@uref{http://mysql.bluep.com/, WWW}
+@c @image{Flags/australia} Australia [Blue Planet/Melbourne] @
+@c @uref{http://mysql.bluep.com/, WWW}
@c removed because ftp was not working 990729 & 30
@c @uref{ftp://mysql.bluep.com/pub/mirror1/mysql/, FTP}
@item
@c Added 990531
@c EMAIL: gavin@itworks.com.au (Gavin Cameron)
-@image{Flags/australia} Australia [ITworks Consulting/Victoria] @
+@c @image{Flags/australia}
+Australia [ITworks Consulting/Victoria] @
@uref{http://mysql.itworks.com.au, WWW}
@c @item
@@ -3955,16 +4079,18 @@ Please report bad or out of date mirrors to @email{webmaster@@mysql.com}.
@itemize @bullet
-@item
+@c @item
@c Ok 981010
+@c Not ok 20000919; Old site (Matt)
@c EMAIL: nick@mweb.com (Nick Rosenberg)
-@image{Flags/south-africa1} South-Africa [Mweb/] @
-@uref{http://www.mysql.mweb.co.za, WWW}
+@c @image{Flags/south-africa1} South-Africa [Mweb/] @
+@c @uref{http://www.mysql.mweb.co.za, WWW}
@item
@c Ok 981010
@c EMAIL: oskar@is.co.za (Oskar Pearson)
-@image{Flags/south-africa1} South-Africa [The Internet Solution/Johannesburg] @
+@c @image{Flags/south-africa1}
+South-Africa [The Internet Solution/Johannesburg] @
@uref{ftp://ftp.is.co.za/linux/mysql/, FTP}
@end itemize
@@ -11872,6 +11998,8 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to be able to run
* CHECK TABLE:: @code{CHECK TABLE} syntax
* ANALYZE TABLE:: @code{ANALYZE TABLE} syntax
* REPAIR TABLE:: @code{REPAIR TABLE} syntax
+* BACKUP TABLE:: @code{BACKUP TABLE} syntax
+* RESTORE TABLE:: @code{RESTORE TABLE} syntax
* DELETE:: @code{DELETE} syntax
* SELECT:: @code{SELECT} syntax
* JOIN:: @code{JOIN} syntax
@@ -17146,7 +17274,7 @@ Note that the table is locked during the time @code{OPTIMIZE TABLE} is
running!
@findex CHECK TABLE
-@node CHECK TABLE, ANALYZE TABLE, OPTIMIZE TABLE, Reference
+@node CHECK TABLE, BACKUP TABLE, OPTIMIZE TABLE, Reference
@section @code{CHECK TABLE} syntax
@example
@@ -17184,8 +17312,65 @@ The different check types stand for the following:
@item @code{EXTENDED} @tab Do a full key lookup for all keys for each row. This ensures that the table is 100 % consistent, but will take a long time!
@end multitable
+@findex BACKUP TABLE
+@node BACKUP TABLE, RESTORE TABLE, CHECK TABLE, Reference
+@section @code{BACKUP TABLE} syntax
+
+@example
+BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory'
+@end example
+
+Make a copy of all the table files to the backup directory that are the
+minimum needed to restore it. Currenlty only works for @code{MyISAM}
+tables. For @code{MyISAM} table, copies @code{.frm} (definition) and
+ @code{.MYD} (data) files. The index file can be rebuilt from those two.
+
+During the backup, read lock will be held for each table, one at time,
+as they are being backed up. If you want to backup several tables as
+a snapshot, you must first issue @code{LOCK TABLES} obtaining a read
+lock for each table in the group.
+
+
+The command returns a table with the following columns:
+
+@multitable @columnfractions .35 .65
+@item @strong{Column} @tab @strong{Value}
+@item Table @tab Table name
+@item Op @tab Always ``backup''
+@item Msg_type @tab One of @code{status}, @code{error}, @code{info} or @code{warning}.
+@item Msg_text @tab The message.
+@end multitable
+
+
+@findex RESTORE TABLE
+@node RESTORE TABLE, ANALYZE TABLE, BACKUP TABLE, Reference
+@section @code{RESTORE TABLE} syntax
+
+@example
+RESTORE TABLE tbl_name[,tbl_name...] FROM '/path/to/backup/directory'
+@end example
+
+Restores the table(s) from the backup that was made with
+@code{BACKUP TABLE}. Existing tables will not be overwritten - if you
+try to restore over an existing table, you will get an error. Restore
+will take longer than BACKUP due to the need to rebuilt the index. The
+more keys you have, the longer it is going to take. Just as
+@code{BACKUP TABLE}, currently only works of @code{MyISAM} tables.
+
+
+The command returns a table with the following columns:
+
+@multitable @columnfractions .35 .65
+@item @strong{Column} @tab @strong{Value}
+@item Table @tab Table name
+@item Op @tab Always ``restore''
+@item Msg_type @tab One of @code{status}, @code{error}, @code{info} or @code{warning}.
+@item Msg_text @tab The message.
+@end multitable
+
+
@findex ANALYZE TABLE
-@node ANALYZE TABLE, REPAIR TABLE, CHECK TABLE, Reference
+@node ANALYZE TABLE, REPAIR TABLE, RESTORE TABLE, Reference
@section @code{ANALYZE TABLE} syntax
@example
@@ -23573,6 +23758,7 @@ tables}.
* Replication Features:: Replication Features
* Replication Options:: Replication Options in my.cnf
* Replication SQL:: SQL Commands related to replication
+* Replication FAQ:: Frequently Asked Questions about replication
@end menu
@node Replication Intro, Replication Implementation, Replication, Replication
@@ -23747,14 +23933,14 @@ of the are available starting in 3.23.15 unless indicated otherwise.
@item @strong{Option} @tab @strong{Description}
@item
@code{log-bin}
-@tab Should be set on the master. Tells it to keep a binary update log.
+ @tab Should be set on the master. Tells it to keep a binary update log.
If a parameter is specified, the log will be written to the specified
location.
(Set on @strong{Master}, Example: @code{log-bin})
@item
@code{log-bin-index}
-@tab Because the user could issue @code{FLUSH LOGS} command, we need to
+ @tab Because the user could issue @code{FLUSH LOGS} command, we need to
know which log is currently active and which ones have been rotated out
and it what sequence. This info is stored in the binary log index file.
The default is `hostname`.index . You can use this option
@@ -23763,40 +23949,40 @@ if you want to be a rebel.
@item
@code{master-host}
-@tab Master hostname or IP address for replication. If not set, the slave
+ @tab Master hostname or IP address for replication. If not set, the slave
thread will not be started.
(Set on @strong{Slave}, Example: @code{master-host=db-master.mycompany.com})
@item
@code{master-user}
-@tab The user the slave thread will authenticate as when connecting to
+ @tab The user the slave thread will authenticate as when connecting to
the master. The user must have @code{FILE} privilige. If the master user
is not set, user @code{test} is assumed.
(Set on @strong{Slave}, Example: @code{master-user=scott})
@item
@code{master-password}
-@tab The password the slave thread will authenticate with when connecting
+ @tab The password the slave thread will authenticate with when connecting
to the master. If not set, empty password is assumed
(Set on @strong{Slave}, Example: @code{master-password=tiger})
@item
@code{master-port}
-@tab The port the master is listening on. If not set, the compiled setting
+ @tab The port the master is listening on. If not set, the compiled setting
of @code{MYSQL_PORT} is assumed. If you have not tinkered with @code{configure}
options, this should be 3306.
(Set on @strong{Slave}, Example: @code{master-port=3306})
@item
@code{master-connect-retry}
-@tab The number of seconds the slave thread will sleep before retrying to
+ @tab The number of seconds the slave thread will sleep before retrying to
connect to the master in case the master goes down or the connection is lost.
Default is 60.
(Set on @strong{Slave}, Example: @code{master-connect-retry=60})
@item
@code{master-info-file}
-@tab The location of the file that remembers where we left off on the master
+ @tab The location of the file that remembers where we left off on the master
during the replication process. The default is master.info in the data
directory. Sasha: The only reason I see for ever changing the default
is the desire to be rebelious.
@@ -23804,7 +23990,7 @@ is the desire to be rebelious.
@item
@code{replicate-do-db}
-@tab Tells the slave thread to restrict replication to the specified database.
+ @tab Tells the slave thread to restrict replication to the specified database.
To specify more than one database, use the directive multiple times, once for
each database. Note that this will only work if you do not use cross-database
queries such as @code{UPDATE some_db.some_table SET foo='bar'} while having
@@ -23813,7 +23999,7 @@ selected a different or no database.
@item
@code{replicate-ignore-db}
-@tab Tells the slave thread to not replicate to the specified database. To
+ @tab Tells the slave thread to not replicate to the specified database. To
specify more than one database to ignore, use the directive multiple times,
once for each database. You must not use cross database updates for this
option.
@@ -23821,32 +24007,32 @@ option.
@item
@code{sql-bin-update-same}
-@tab If set, setting @code{SQL_LOG_BIN} to a value will automatically set
+ @tab If set, setting @code{SQL_LOG_BIN} to a value will automatically set
@code{SQL_LOG_UPDATE} to the same value and vice versa.
(Set on @strong{Master}, Example: @code{sql-bin-update-same})
@item
@code{log-slave-updates}
-@tab Tells the slave to log the updates from the slave thread to the binary
+ @tab Tells the slave to log the updates from the slave thread to the binary
log. Off by default. You will need to turn it on if you plan to daisy-chain
the slaves
(Set on @strong{Slave}, Example: @code{log-slave-updates})
@item
@code{binlog-do-db}
-@tab Tells the master it should log updates for the specified database, and
+ @tab Tells the master it should log updates for the specified database, and
exclude all others not explicitly mentioned.
(Set on @strong{Master}, Example: @code{binlog-do-db=some_database})
@item
@code{binlog-ignore-db}
-@tab Tells the master that updates to the given database should not be logged
+ @tab Tells the master that updates to the given database should not be logged
to the binary log
(Set on @strong{Master}, Example: @code{binlog-ignore-db=some_database})
@end multitable
-@node Replication SQL, , Replication Options, Replication
+@node Replication SQL, Replication FAQ, Replication Options, Replication
@section SQL commands related to replication
Replication can be controlled through the SQL interface. Below is the
@@ -23856,30 +24042,30 @@ summary of commands:
@item @strong{Command} @tab @strong{Description}
@item @code{SLAVE START}
-@tab Starts the slave thread. (Slave)
+ @tab Starts the slave thread. (Slave)
@item @code{SLAVE STOP}
-@tab Stops the slave thread. (Slave)
+ @tab Stops the slave thread. (Slave)
@item @code{SET SQL_LOG_BIN=0}
-@tab Disables update logging (Master)
+ @tab Disables update logging (Master)
@item @code{SET SQL_LOG_BIN=1}
-@tab Re-enable update logging (Master)
+ @tab Re-enable update logging (Master)
@item @code{FLUSH MASTER}
-@tab Deletes all binary logs listed in the index file, resetting the binlog
+ @tab Deletes all binary logs listed in the index file, resetting the binlog
index file to be empty. (Master)
@item @code{FLUSH SLAVE}
-@tab Makes the slave forget its replication position in the master
+ @tab Makes the slave forget its replication position in the master
logs. (Slave)
@item @code{LOAD TABLE tblname FROM MASTER}
-@tab Downloads a copy of the table from master to the slave. (Slave)
+ @tab Downloads a copy of the table from master to the slave. (Slave)
@item @code{CHANGE MASTER TO master_def_list}
-@tab Changes the master parameters to the values specified in
+ @tab Changes the master parameters to the values specified in
@code{master_def_list} and restarts the slave thread. @code{master_def_list}
is a comma-separated list of @code{master_def} where @code{master_def} is
one of the following: @code{MASTER_HOST}, @code{MASTER_USER},
@@ -23908,13 +24094,235 @@ restarting, and the slave will read its master from @code{my.cnf} or the
command line. (Slave)
@item @code{SHOW MASTER STATUS}
-@tab Provides status info on the binlog of the master. (Master)
+ @tab Provides status info on the binlog of the master. (Master)
@item @code{SHOW SLAVE STATUS}
-@tab Provides status info on essential parameters of the slave thread. (Slave)
+ @tab Provides status info on essential parameters of the slave thread. (Slave)
@end multitable
+@node Replication FAQ, , Replication SQL, Replication
+@section Replication FAQ
+
+@strong{Q}: Why do I sometimes see more than one @code{Binlog_Dump} thread on
+the master after I have restarted the slave?
+
+@strong{A}: @code{Binlog_Dump} is a continuous process that is handled by the
+server the following way:
+
+@itemize
+@item
+catch up on the updates
+@item
+once there are no more updates left, go into @code{pthread_cond_wait()},
+from which we can be woken up either by an update or a kill
+@item
+on wake up, check the reason, if we are not supposed to die, continue
+the @code{Binlog_dump} loop
+@item
+if there is some fatal error, such as detecting a dead client,
+terminate the loop
+@end itemize
+
+So if the slave thread stops on the slave, the corresponding
+@code{Binlog_Dump} thread on the master will not notice it until after
+at least one update to the master ( or a kill), which is needed to wake
+it up from @code{pthread_cond_wait()}. In the meantime, the slave
+could have opened another connection, which resulted in another
+@code{Binlog_Dump} thread.
+
+Once we add @strong{server_id} variable for each server that
+participates in replication, we will fix @code{Binlog_Dump} thread to
+kill all the zombies from the same slave on reconnect.
+
+@strong{Q}: What issues should I be aware of when setting up two-way
+replication?
+
+@strong{A}: @strong{MySQL} replication currently does not support any
+locking protocol between master and slave to guarantee the atomicity of
+a distributed ( cross-server) update. In in other words, it is possible
+for client A to make an update to co-master 1, and in the meantime,
+before it propogates to co-master 2, client B could make an update to
+co-master 2 that will make the update of client A work differently than
+it did on co-master 1. Thus when the update of client A will make it
+to co-master 2, it will produce tables that will be different than
+what you have on co-master 1, even after all the updates from co-master
+2 have also propogated. So you should not co-chain two servers in a
+two-way replication relationship, unless you are sure that you updates
+can safely happen in any order, or unless you take care of mis-ordered
+updates somehow in the client code.
+
+Until we implement @code{server_id} variable, you cannot have more than
+two servers in a co-master replication relationship, and you must
+run @code{mysqld} without @code{log-slave-updates} (default) to avoid
+infinite update loops.
+
+You must also realize that two-way replication actually does not improve
+performance very much, if at all, as far as updates are concerned. Both
+servers need to do the same amount of updates each, as you would have
+one server do. The only difference is that there will be a little less
+lock contention, because the updates originating on another server will
+be serialized in one slave thread. This benefit, though, might be
+offset by network delays.
+
+@strong{Q}: How can I use replication to improve performance of my system?
+
+@strong{A}: You should set up one server as the master, and direct all
+writes to it, and configure as many slaves as you have the money and
+rackspace for, distributing the reads among the master and the slaves.
+
+@strong{Q}: What should I do to prepare my client code to use
+performance-enhancing replication?
+
+@strong{A}:
+If the part of your code that is responsible for database access has
+been properly abstracted/modularized, converting it to run with the
+replicated setup should be very smooth and easy - just change the
+implementation of your database access to read from some slave or the
+master, and to awlays write to the master. If your code does not have
+this level of abstraction,
+setting up a replicated system will give you an opportunity/motivation
+to it clean up.
+ You should start by creating a wrapper library
+/module with the following functions:
+
+@itemize
+@item
+@code{safe_writer_connect()}
+@item
+@code{safe_reader_connect()}
+@item
+@code{safe_reader_query()}
+@item
+@code{safe_writer_query()}
+@end itemize
+
+@code{safe_} means that the function will take care of handling all
+the error conditions.
+
+You should then convert your client code to use the wrapper library.
+It may be a painful and scary process at first, but it will pay off in
+the long run. All application that follow the above pattern will be
+able to take advantage of one-master/many slaves solution. The
+code will be a lot easier to maintain, and adding troubleshooting
+options will be trivial - you will just need to modify one or two
+functions, for example, to log how long each query took, or which
+query, among your many thousands, gave you an error. If you have written a lot of code already,
+you may want to automate the conversion task by using Monty's
+@code{replace} utility, which comes with the standard distribution of
+@strong{MySQL}, or just write your own Perl script. Hopefully, your
+code follows some recognizable pattern. If not, then you are probably
+better off re-writing it anyway, or at least going through and manually
+beating it into a pattern.
+
+Note that, of course, you can use different names for the
+functions. What is important is having unified interface for connecting
+for reads, connecting for writes, doing a read, and doing a write.
+
+
+@strong{Q}: When and how much can @code{MySQL} replication improve the performance
+of my system?
+
+@strong{A}: @strong{MySQL} replication is most benefitial for a system
+with frequent reads and not so frequent writes. In theory, by using a
+one master/many slaves setup you can scale by adding more slaves until
+you either run out of network bandwidth, or your update
+load grows to the point
+that the master cannot handle it.
+
+In order to determine how many slaves you can get before the added
+benefits begin to level out, and how much you can improve performance
+of your site, you need to know your query patterns, and empirically
+ (by benchmarking) determine the relationship between the throughput
+on reads ( reads per second, or @code{max_reads}) and on writes
+@code{max_writes}) on a typical master and a typical slave. The
+example below will show you a rather simplified calculation of what you
+can get with replication for our imagined system.
+
+Let's say our system load consist of 10% writes and 90% reads, and we
+have determined that @code{max_reads} = 1200 - 2 * @code{max_writes},
+or in other words, our system can do 1200 reads per second with no
+writes, our average write is twice as slow as average read,
+and the relationship is
+linear. Let us suppose that our master and slave are of the same
+capacity, and we have N slaves and 1 master. Then we have for each
+server ( master or slave):
+
+@code{reads = 1200 - 2 * writes} ( from bencmarks)
+
+@code{reads = 9* writes / (N + 1) } ( reads split, but writes go
+to all servers)
+
+@code{9*writes/(N+1) + 2 * writes = 1200}
+
+@code{writes = 1200/(2 + 9/(N+1)}
+
+So if N = 0, which means we have no replication, our system can handle
+1200/11, about 109 writes per second ( which means we will have 9 times
+as many reads to to the nature of our application)
+
+If N = 1, we can get up to 184 writes per second
+
+If N = 8, we get up to 400
+
+If N = 17, 480 writes
+
+Eventually as N approaches infinity ( and our budget negative infinity),
+we can get very close to 600 writes per second, increasing system
+throughput about 5.5 times. However, with only 8 servers, we increased
+it almost 4 times already.
+
+Note that our computations assumed infitine network bandwidth, and
+neglected several other factors that could turn out to be signficant on
+your system. In many cases, you may not be able to make a computation
+similar to the one above that will accurately predict what will happen
+on your system if you add N replication slaves. However, answering the
+following questions should help you decided whether and how much if at
+all the replication will improve the performance of your system:
+
+@itemize
+@item
+What is the read/write ratio on your system?
+@item
+How much more write load can one server handle if you reduce the reads?
+@item
+How many slaves do you have bandwidth for on your network?
+@end itemize
+
+@strong{Q}: How can I use replication to provide redundancy/high
+availability?
+
+@strong{A}: With the currently available features, you would have to
+set up a master and a slave (or several slaves), and write a script
+that will monitor the
+master to see if it is up, and instruct your applications and
+the slaves of the master change in case of failure. Some suggestions:
+
+@itemize
+@item
+To tell a slave to change the master use @code{CHANGE MASTER TO} command
+@item
+A good way to keep your applications informed where the master is is by
+having a dynamic DNS entry for the master. With @strong{bind} you can
+use @code{nsupdate} to dynamically update your DNS
+@item
+You should run your slaves with @code{log-bin} option and without
+@code{log-slave-updates}. This way the slave will be ready to become a
+master as soon as you issue @code{STOP SLAVE}; @code{FLUSH MASTER}, and
+@code{CHANGE MASTER TO} on the other slaves. It will also help you catch
+spurious updates that may happen because of misconfiguration of the
+slave ( ideally, you want to configure access rights so that no client
+can update the slave, except for the slave thread) combined with the
+bugs in your client programs ( they should never update the slave
+directly).
+
+@end itemize
+
+We are currently working on intergrating an automatic master election
+system into @strong{MySQL}, but until it is ready, you will have to
+create your own monitoring tools .
+
+
@cindex Performance
@cindex Optimization
@node Performance, MySQL Benchmarks, Replication, Top
@@ -36258,6 +36666,16 @@ ODBC and VisualC++ interface questions.
@strong{MySQL} server.
@end table
+@c we don't want the entire change history in the nusphere manual
+@ifset nusphere
+@node News, Bugs, Credits, Top
+@appendix MySQL change history
+
+The MySQL change history can be found in the latest version of the mysql
+manual at @url{http://www.mysql.com/documentation/manual/}
+@end ifset
+
+@ifclear nusphere
@node News, Bugs, Credits, Top
@appendix MySQL change history
@@ -36332,26 +36750,36 @@ Fixed privilege checking for @code{CHECK TABLE}.
The @code{MyISAM} repair/reindex code didn't use the @code{--tempdir}
option for it's temporary files.
@item
+Added @code{BACKUP TABLE/RESTORE TABLE}.
+@item
+Fixed coredump on @code{CHANGE MASTER TO} when the slave did not have
+the master to start with.
+@item
+Fixed incorrect @code{Time} in the processlist for @code{Connect} of
+the slave thread.
+@item
+The slave now logs when it connects to the master.
+@item
Fixed a core dump bug when doing @code{FLUSH MASTER} when one didn't give
-a filename argument to @code{--log-bin}
+a filename argument to @code{--log-bin}.
@item
-Added missing ha_berkeley.# files to the windows source distribution.
+Added missing @file{ha_berkeley.x} files to the @strong{MySQL} windows
@item
Fixed some mutex bugs in the log code that could cause thread blocks if new
log files couldn't be created.
@item
Added lock time and number of selected processed rows to slow query log.
@item
-Added @code{--memlock} option to mysqld to lock mysqld in memory on
-systems with the @code{mlockall()} call (like in Solaris).
+Added @code{--memlock} option to @code{mysqld} to lock @code{mysqld}
+in memory on systems with the @code{mlockall()} call (like in Solaris).
@item
@code{HEAP} tables didn't use keys properly. (Bug from 3.23.23)
@item
Added better support for @code{MERGE} tables (keys, mapping, creation,
documentation...). @xref{MERGE}.
@item
-Fixed bug in mysqldump from 3.23 which caused that some @code{CHAR} columns
-wheren't quoted.
+Fixed bug in @code{mysqldump} from 3.23 which caused some @code{CHAR} columns
+not to be quoted.
@item
Merged @code{analyze}, @code{check}, @code{optimize} and repair code.
@item
@@ -36365,12 +36793,13 @@ Added a lot of new statistics variables.
@item
Fixed @code{ORDER BY} bug with BDB tables.
@item
-Removed warning that mysqld couldn't remove the .pid file under Windows.
+Removed warning that @code{mysqld} couldn't remove the @file{.pid} file
+under Windows.
@item
Changed @code{--log-isam} to log @strong{MyISAM} tables instead of isam
tables.
@item
-Fixed that @code{CHECK TABLE} works on windows.
+Fixed that @code{CHECK TABLE} works on Windows.
@item
Added file mutexes to make @code{pwrite()} safe on Windows.
@end itemize
@@ -40424,6 +40853,7 @@ fields, the @code{BLOB} was garbage on output.
@item
Fixed @code{DISTINCT} with calculated columns.
@end itemize
+@end ifclear
@node Bugs, TODO, News, Top
@appendix Known errors and design deficiencies in MySQL
@@ -40570,7 +41000,7 @@ For platform-specific bugs, see the sections about compiling and porting.
@cindex TODO
@node TODO, Porting, Bugs, Top
-@appendix List of things we want to add to MySQL in the future (The TODO)
+@appendix MySQL and the future (The TODO)
@menu
* TODO future:: Things that must done in the very near future
@@ -40804,10 +41234,8 @@ show columns from t2;
@item
Implement function: @code{get_changed_tables(timeout,table1,table2,...)}
@item
-Atomic updates; This includes a language that one can even use for
-a set of stored procedures.
-@item
-@code{update items,month set items.price=month.price where items.id=month.id;}
+Atomic multi-table updates, eg @code{update items,month set
+items.price=month.price where items.id=month.id;};
@item
Change reading through tables to use memmap when possible. Now only
compressed tables use memmap.
@@ -40885,8 +41313,6 @@ Use @code{NULL} instead.
@item
Add full support for @code{JOIN} with parentheses.
@item
-Reuse threads for systems with a lot of connections.
-@item
As an alternative for one thread / connection manage a pool of threads
to handle the queries.
@item