SQL-datatyper för olika DB-filer Håller en fast längdsträng (kan innehålla bokstäver, siffror och specialtecken). Den fasta storleken anges i parentes. Kan lagra upp till 255 tecken Håller en variabel längdsträng (kan innehålla bokstäver, siffror och specialtecken). Maximal storlek anges i parentes. Kan lagra upp till 255 tecken. Obs! Om du anger ett större värde än 255 konverteras det till en texttyp. Håller en sträng med en maximal längd på 255 tecken. Håller en sträng med en maximal längd på 65.535 tecken. För BLOB (Binary Large OBjects). Håller upp till 65.535 byte data Håller en sträng med en maximal längd på 16.777.215 tecken för BLOB (Binary Large OBjects). Håller upp till 16.777.215 bytes data Håller en sträng med en maximal längd på 4,294,967,295 tecken för BLOB (Binary Large OBjects). Håller upp till 4,294,967,295 bytes data Låt dig ange en lista över möjliga värden. Du kan lista upp till 65535 värden i en ENUM-lista. Om ett värde infogas som inte finns i listan, läggs ett tomt värde in. Obs! Värdena sorteras i den ordning du anger dem. Du anger de möjliga värdena i det här formatet: ENUM (X, Y, Z) Liknande ENUM förutom att SET kan innehålla upp till 64 listobjekt och kan lagra mer än ett val -128 till 127 normalt. 0 till 255 UNSIGNED. Det maximala antalet siffror kan anges i parentes -32768 till 32767 normalt. 0 till 65535 UNSIGNED. Det maximala antalet siffror kan anges i parentes -8388608 till 8388607 normalt. 0 till 16777215 UNSIGNED. Det maximala antalet siffror kan anges i parentes -2147483648 till 2147483647 normal. 0 till 4294967295 UNSIGNED. Det maximala antalet siffror kan anges i parentes -9223372036854775808 till 9223372036854775807 normal. 0 till 18446744073709551615 UNSIGNED. Maximalt antal siffror kan anges i parentes Ett litet antal med en flytande decimalpunkt. Det maximala antalet siffror kan anges i storleksparametern. Maximalt antal siffror till höger om decimaltalet anges i d-parametern Ett stort tal med en flytande decimalpunkt. Det maximala antalet siffror kan anges i storleksparametern. Maximalt antal siffror till höger om decimalen anges i d-parametern A DOUBLE som är lagrad som en sträng. möjliggör en bestämd decimalpunkt. Det maximala antalet siffror kan anges i storleksparametern. Maximalt antal siffror till höger om decimalen anges i d-parametern. Heltalstyperna har ett extra alternativ som heter UNSIGNED. Normalt går heltalet från ett negativt till ett positivt värde. Lägga till UNSIGNED-attributet kommer att flytta det här intervallet så att det startar vid noll istället för ett negativt tal. MySQL Datatyper Sammanfattning: I denna handledning lär du dig information om MySQL-datatyper och hur du använder dem effektivt vid design av databas i MySQL. En databas tabell innehåller flera kolumner med specifika datatyper som numerisk eller sträng. MySQL tillhandahåller fler datatyper än bara numeriska eller strängar. Varje datatyp i MySQL kan bestämmas av följande egenskaper: Den typ av värden den representerar. Utrymmet som tar upp och om värdena är en fast längd eller en variabel längd. Värdena för datatypen kan indexeras eller inte. Hur MySQL jämför värdena för en viss datatyp. Numeriska datatyper Du kan hitta alla SQL-standardtypstyper i MySQL inklusive exakt nummerdatatyp och ungefärliga numeriska datatyper inklusive heltal, fixpunkt och flytpunkt. Dessutom stöder MySQL även BIT-datatyp för lagring av bitfältvärden. Numeriska typer kan signeras eller unsigned utom BIT-typen. I följande tabell visas sammanfattningen av numeriska typer i MySQL: Ett mycket litet heltal Ett litet heltal Ett mellanspråkigt heltal Ett standard heltal Ett stort heltal Ett fast punktnummer En enkel precision flytpunkt En dubbel precision flytpunkt Boolean datatyp MySQL har inte inbyggd BOOLEAN eller BOOL datatyp. Därför använder den den minsta heltalstypen, TINYINT (1) för att representera booleska. Med andra ord, BOOLEAN och BOOL är synonymer för TINYINT (1). Stringdatatyper I MySQL kan en sträng rymma allt från vanlig text till binära data som bilder och filer. Strängen kan jämföras och sökas baserat på mönster matchning med hjälp av LIKE-operatören. vanligt uttryck. och fulltextsökning. I följande tabell visas strängdatatyperna i MySQL: Visa ett hjälpmeddelande och avsluta. Aktivera automatisk omhushållning. Det här alternativet är aktiverat som standard, vilket gör det möjligt att slutföra databas-, tabell - och kolumnnamn. Använd - disable-auto-rehash för att inaktivera rehashing. Det gör att mysql startar snabbare, men du måste utfärda rehash-kommandot eller dess genväg om du vill använda namnet. För att fylla i ett namn, skriv in den första delen och tryck på Tab. Om namnet är otvetydigt, fyller mysql det. Annars kan du trycka på Tab igen för att se de möjliga namnen som börjar med det du har skrivit hittills. Slutförandet sker inte om det inte finns någon standarddatabas. Den här funktionen kräver en MySQL-klient som är sammanställd med läsarkivet. Vanligtvis är läsarkivet inte tillgängligt på Windows. Orsakets resultatuppsättningar visas vertikalt om de är för breda för det aktuella fönstret, och använder annars normalt tabellformat. (Detta gäller uttalanden som avslutas av eller G.) Skriv ut resultat med fliken som kolumnavskiljare, med varje rad på en ny rad. Med det här alternativet använder mysql inte historikfilen. Batch-läget resulterar i icke-tabellformat utmatningsformat och flykt av specialtecken. Escaping kan avaktiveras med hjälp av råmodus, se beskrivningen för alternativet --raw. Det här alternativet hjälper när du bearbetar mysqlbinlog-utdata som kan innehålla BLOB-värden. Som standard översätter mysql rn i uttalande strängar till n och tolkar 0 som uttalande terminator. - binärt läge avaktiverar båda funktionerna. Det inaktiverar också alla mysql-kommandon utom charset och avgränsare i icke-interaktivt läge (för inmatning piped till mysql eller laddad med källkommandot). På en dator med flera nätverksgränssnitt använder du det här alternativet för att välja vilket gränssnitt som ska användas för anslutning till MySQL-servern. Skriv kolumnnamn i resultat. Visa resultatuppsättningsmetadata. Vare sig att bevara kommentarer i uttalanden som skickas till servern. Standardinställningen är - skip-kommentarer (kassera kommentarer), aktivera med - kommentarer (bevara kommentarer). Från MySQL 5.7.7 skickar mysql-klienten alltid optimeringshints till servern, oavsett om det här alternativet ges. För att säkerställa att optimeringshints inte avlägsnas om du använder en äldre version av mysql-klienten med en version av servern som förstår optimeringshints, anropa mysql med alternativet - kommentarer. Komprimera all information som skickas mellan klienten och servern om både stödkomprimering. Ange till servern att klienten kan hantera sandboxläget om det konto som används för att ansluta har ett löptid för lösenord. Detta kan vara användbart för noninteractive invocations av mysql eftersom vanligtvis servern kopplar bort icke-interna klienter som försöker ansluta med ett konto med ett löptid som löper ut. (Se avsnitt 7.3.7, lösenordsutgång och sandlådsläge.) Det här alternativet har lagts till i MySQL 5.7.2. Databasen att använda. Detta är användbart huvudsakligen i en alternativfil. Skriv en felsökningslogga. En typisk debugoptions-sträng är d: t: o, filnamn. Standardvärdet är d: t: o, tmpmysql. trace. Det här alternativet är endast tillgängligt om MySQL byggdes med hjälp av WITHDEBUG. MySQL-utgåva binärer som tillhandahålls av Oracle byggs inte med det här alternativet. Skriv ut en del felsökningsinformation när programmet avslutas. Skriv ut felsökningsinformation och minnes - och CPU-användarstatistik när programmet avslutas. En antydan om klientens autentiseringsprogram för användning. Se avsnitt 7.3.8, Pluggbar autentisering. Använd charsetname som standard teckenuppsättning för klienten och anslutningen. Det här alternativet kan vara användbart om operativsystemet använder en teckenuppsättning och mysql-klienten använder som standard en annan. I det här fallet kan utmatningen formateras felaktigt. Du kan vanligtvis lösa sådana problem genom att använda det här alternativet för att tvinga klienten att använda systemteckenuppsättningen istället. Läs den här alternativfilen efter den globala alternativfilen men (på Unix) före användarfilen. Om filen inte existerar eller annars är otillgänglig uppstår ett fel. Filnamnet tolkas relativt den aktuella katalogen om den anges som ett relativ söknamn i stället för ett fullständigt söknamn. Använd endast den angivna alternativfilen. Om filen inte existerar eller annars är otillgänglig uppstår ett fel. Filnamnet tolkas relativt den aktuella katalogen om den anges som ett relativ söknamn i stället för ett fullständigt söknamn. Undantag: Även med - default-fil. klientprogram läser. mylogin. cnf. Läs inte bara de vanliga alternativgrupperna, utan också grupper med de vanliga namnen och ett suffix av str. Mysql läser till exempel normalt klient - och mysql-grupperna. Om alternativet - defaults-group-suffixother ges, läser mysql också clientother och mysqlother-grupperna. Ställ in avkänningsavgränsaren. Standardvärdet är semikolonteckenet (). Inaktivera namngivna kommandon. Använd endast formuläret, eller använd namngivna kommandon bara i början av en rad som slutar med en semikolon (). mysql startar med detta alternativ aktiverat som standard. Men även med det här alternativet fungerar kommandon med långformat fortfarande från första raden. Se avsnitt 5.5.1.2, mysql-kommandon. Utför uttalandet och avsluta. Standardutmatningsformatet är som det som produceras med - batch. Se avsnitt 5.2.4, Använda alternativ på kommandoraden. för några exempel. Med det här alternativet använder mysql inte historikfilen. Fortsätt även om ett SQL-fel uppstår. En kolonnseparerad lista över en eller flera mönsterspecifika uttalanden för att ignorera för loggningsändamål. Dessa mönster läggs till i standardmallistan (IDENTIFIED: PASSWORD). Värdet som anges för detta alternativ påverkar loggningen av uttalanden som är skrivna till historikfilen och till syslog om alternativet --syslog ges. Mer information finns i avsnitt 5.5.1.3, mysql Logging. Anslut till MySQL-servern på den angivna värden. Producera HTML-utdata. Ignorera mellanslag efter funktionsnamn. Effekten av detta beskrivs i diskussionen för IGNORESPACE SQL-läget (se avsnitt 6.1.8, Server SQL-lägen). SQL-stämning som ska utföras efter anslutning till servern. Om automatisk återanslutning är aktiverad utförs uttalandet igen efter återkoppling sker. Skriv radnummer för fel. Inaktivera detta med - skip-line-nummer. Aktivera eller inaktivera LOCAL kapacitet för LOAD DATA INFILE. Med inget värde gör alternativet LOCAL. Alternativet kan anges som - local-infile0 eller --local-infile1 för att uttryckligen inaktivera eller aktivera LOCAL. Aktivering av LOCAL har ingen effekt om servern inte stöder den också. Läs alternativ från den angivna inloggningsbanan i filen. mylogin. cnf inloggningsväg. En inloggningsväg är en alternativgrupp som innehåller alternativ som anger vilken MySQL-server som ska anslutas till och vilket konto som ska verifieras som. För att skapa eller ändra en inloggningsvägsfil, använd verktyget mysqlconfigeditor. Se avsnitt 5.6.6, mysqlconfigeditor MySQL Configuration Utility. Aktivera namngivna mysql-kommandon. Långformatkommandon är tillåtna, inte bara kortformatkommandon. Till exempel, sluta och q är båda igenkända. Använd kommandon - skip-named-kommandon för att inaktivera namngivna kommandon. Se avsnitt 5.5.1.2, mysql-kommandon. Detta har samma effekt som - skip-auto-rehash. Se beskrivningen för --auto-rehash. Ringa inte när fel uppstår. Läs inte några alternativfiler. Om programstart misslyckas på grund av att du läser okända alternativ från en alternativfil, kan inga standardvärden användas för att förhindra att de läses. Undantaget är att filen. mylogin. cnf, om den existerar, läses i alla fall. Detta gör det möjligt att ange lösenord på ett säkrare sätt än på kommandoraden, även när - no-standard används. (.mylogin. cnf skapas av mysqlconfigeditor-verktyget. Se avsnitt 5.6.6, mysqlconfigeditor MySQL Configuration Utility.) Ignorera uttalanden förutom de som inträffar medan standarddatabasen är den som heter på kommandoraden. Detta alternativ är rudimentärt och bör användas med försiktighet. Uttalande filtrering baseras endast på USE-uttalanden. Ursprungligen utför mysql uttalanden i inmatningen eftersom att ange en databas dbname på kommandoraden motsvarar att infoga USE dbname i början av inmatningen. Sedan uppträder mysql för eller förkastar följande uttalanden beroende på om databasen heter den på kommandoraden. Innehållet i uttalandena är oumbärligt. Antag att mysql åberopas för att behandla denna uppsättning uttalanden: Om kommandoraden är mysql --force --on-database db1. mysql hanterar ingången enligt följande: DELETE-satsen utförs eftersom standarddatabasen är db1. även om uttalandet heter ett bord i en annan databas. DROP TABLE och CREATE TABLE-förklaringarna utförs inte eftersom standarddatabasen inte är db1. även om påståenden heter ett bord i db1. INSERT och CREATE TABLE-meddelandena körs eftersom standarddatabasen är db1. även om CREATE TABLE-anteckningen namnger en tabell i en annan databas. Använd det angivna kommandot för sökning av sökfrågor. Om kommandot utelämnas är standardsökaren värdet av din PAGER-miljövariabel. Giltiga personsökare är mindre. Mer . cat gt filnamn. och så vidare. Det här alternativet fungerar bara på Unix och endast i interaktivt läge. För att avaktivera personsökning, använd - skip-personsökare. Avsnitt 5.5.1.2, MySQL-kommandon. diskuterar utgående personsökning ytterligare. Lösenordet som ska användas när du ansluter till servern. Om du använder det korta alternativet formuläret (-p) kan du inte ha ett mellanslag mellan alternativet och lösenordet. Om du släpper lösenordet efter alternativet --password eller - p på kommandoraden, frågar mysql för en. Ange ett lösenord på kommandoraden bör anses vara osäker. Se avsnitt 7.1.2.1, slutanvändarriktlinjer för lösenordsäkerhet. Du kan använda en alternativfil för att undvika att ge lösenordet på kommandoraden. På Windows, anslut till servern med ett namngivet rör. Det här alternativet gäller endast om servern stöder namngivna anslutningar. Den katalog där du ska leta efter plugins. Ange det här alternativet om alternativet --default-auth används för att ange ett autentiseringsprogram, men mysql kan inte hitta det. Se avsnitt 7.3.8, Pluggbar autentisering. TCPIP-portnumret som ska användas för anslutningen. Skriv ut programnamnet och alla alternativ som det kommer från alternativfiler. Ställ in prompten till det angivna formatet. Standardvärdet är mysqlgt. De speciella sekvenser som prompten kan innehålla beskrivs i avsnitt 5.5.1.2, mysql-kommandon. Anslutningsprotokollet för att ansluta till servern. Det är användbart när de andra anslutningsparametrarna normalt skulle leda till att ett protokoll används annat än det du vill ha. För detaljer om tillåtna värden, se Avsnitt 5.2.2, Ansluta till MySQL-servern. Cache inte varje sökresultat, skriv ut varje rad som den har tagits emot. Detta kan sakta ner servern om utmatningen är avstängd. Med det här alternativet använder mysql inte historikfilen. För tabellutmatning gör det möjligt att skilja mellan ett kolumnvärde från en annan i rutan runt kolumner. För nontabulär utgång (som produceras i batchläge eller när batch eller - silent-alternativet ges), släpps specialtecken i utgången så att de lätt kan identifieras. Newline, flik, NUL. och backslash är skrivna som n. t. 0. och. Alternativet --raw stänger av att denna karaktär flyr. Följande exempel visar tabulär kontra nontabulär utgång och användningen av råläge för att inaktivera flykt: Om anslutningen till servern går vilse försöker du automatiskt ansluta igen. Ett enda återkopplingsförsök görs varje gång anslutningen går förlorad. För att undertrycka återkopplingsbeteende, använd - skip-återansluta. Tillåt endast de UPDATE - och DELETE-deklarationerna som anger vilka rader som ska ändras genom att använda nyckelvärden. Om du har ställt in det här alternativet i en alternativfil kan du åsidosätta det genom att använda --safe-uppdateringar på kommandoraden. Se avsnitt 5.5.1.6, mysql Tips. för mer information om detta alternativ. Skicka inte lösenord till servern i gammalt format (före 4,1). Detta förhindrar anslutningar förutom servrar som använder det nya lösenordet format. Som av MySQL 5.7.5 avlägsnas det här alternativet och kommer att tas bort i en framtida MySQL-utgåva. Det är alltid aktiverat och försöker inaktivera det (- skip-secure-auth. - secure-auth0) ger ett fel. Innan MySQL 5.7.5 är det här alternativet aktiverat som standard men kan inaktiveras. Lösenord som använder förhöjningsmetoden före 4.1 är mindre säkra än lösenord som använder den metod som används för inbyggd lösenordshastighet och bör undvikas. Pre-4.1-lösenord avlägsnas och stöd för dem tas bort i MySQL 5.7.5. För anvisningar för uppgradering av konto, se Avsnitt 7.5.1.3, Migrera bort från Pre-4.1 Password Hashing och mysqloldpassword-plugin. Sökvägen till en fil som innehåller serverns RSA-nyckel. Filen måste vara i PEM-format. Den allmänna nyckeln används för RSA-kryptering av klientlösenordet för anslutningar till servern som görs med konton som autentiserar med sha256password plugin. Det här alternativet ignoreras för klientkonton som inte autentiserar med det plugin. Det ignoreras också om lösenordskryptering inte behövs, vilket är fallet när klienten ansluter till servern med en SSL-anslutning. Servern skickar den offentliga nyckeln till klienten efter behov, så det är inte nödvändigt att använda det här alternativet för att RSA-lösenords kryptering ska uppstå. Det är mer effektivt att göra det eftersom servern inte behöver skicka nyckeln. För ytterligare diskussioner angående användning av sha256password plugin, inklusive hur man får RSA public key, se Avsnitt 7.5.1.4, SHA-256 Authentication Plugin. Det här alternativet är endast tillgängligt om MySQL byggdes med OpenSSL. På Windows, det delade minnesnamnet som ska användas, för anslutningar som görs med hjälp av delat minne till en lokal server. Standardvärdet är MYSQL. Det delade minnesnamnet är skiftlägeskänsligt. Servern måste startas med alternativet - Delat minne för att aktivera anslutningar med delat minne. Orsak varningar som ska visas efter varje uttalande om det finns några. Det här alternativet gäller interaktivt och batch-läge. Ignorera SIGINT-signaler (vanligtvis resultatet av att skriva ControlC). Tyst läge. Producera mindre produktion. Detta alternativ kan ges flera gånger för att producera mindre och mindre resultat. Det här alternativet resulterar i nontabulärt utdataformat och flykt av specialtecken. Escaping kan avaktiveras med hjälp av råmodus, se beskrivningen för alternativet --raw. Skriv inte kolumnnamn i resultat. Skriv inte radnummer för fel. Användbar när du vill jämföra resultatfiler som innehåller felmeddelanden. För anslutningar till localhost. Unix-socketfilen som ska användas, eller, på Windows, namnet på det angivna röret som ska användas. Alternativ som börjar med --ssl anger om du vill ansluta till servern med SSL och ange var du ska hitta SSL-nycklar och certifikat. Se avsnitt 7.4.5, Kommandoalternativ för säkra anslutningar. Det här alternativet får mysql att skicka interaktiva uttalanden till systemloggningsfaciliteten. På Unix är detta syslog på Windows, det är Windows Event Log. Destinationen där loggade meddelanden visas är beroende av systemet. På Linux är destinationen ofta varlogmessages filen. Här är ett urval av produktion som genereras på Linux genom att använda --syslog. Denna utmatning är formaterad för läsbarhet varje loggat meddelande tar faktiskt en enda rad. Alternativet --syslog läggs till i MySQL 5.7.1. Visningsutgång i tabellformat. Detta är standard för interaktiv användning, men kan användas för att producera tabellutmatning i batchläge. Lägg till en kopia av utdata till den angivna filen. Det här alternativet fungerar endast i interaktivt läge. Avsnitt 5.5.1.2, MySQL-kommandon. diskuterar tee-filer ytterligare. De protokoll som klienten tillåter för krypterade anslutningar. Värdet är en kommaseparerad lista som innehåller ett eller flera protokollnamn. De protokoll som kan namnges för detta alternativ beror på SSL-biblioteket som används för att kompilera MySQL. För detaljer, se Avsnitt 7.4.3, Säkra anslutningsprotokoll och kodare. Detta alternativ har lagts till i MySQL 5.7.10. Spola bufferten efter varje fråga. MySQL användarnamnet som ska användas när du ansluter till servern. Verbose-läge. Producera mer produktion om vad programmet gör. Detta alternativ kan ges flera gånger för att producera mer och mer utdata. (Till exempel, - v - v - v producerar tabellutmatningsformat även i batchläge.) Visa versionsinformation och avsluta. Skriv ut utfrågningsraderna vertikalt (en rad per kolumnvärde). Utan det här alternativet kan du ange vertikal utmatning för enskilda uppgifter genom att säga upp dem med G. Om anslutningen inte kan etableras, vänta och försök istället för att avbryta. Producera XML-utdata. Utmatningen när - xml används med mysql matchar den för mysqldump - xml. Se avsnitt 5.5.4, mysqldump Ett databas backupprogram för detaljer. XML-utgången använder också en XML-namnrymd, som visas här: Du kan också ställa in följande variabler med hjälp av - varnamnvärde. Antal sekunder före anslutningstiden. (Standardvärdet är 0.) Buffertens maximala storlek för kundserverkommunikation. Standardvärdet är 16 MB, högst 1 GB. Den automatiska gränsen för rader i ett sammanhang när du använder - säkra uppdateringar. (Standardvärdet är 1.000.000.) Buffertstorleken för TCPIP och socket-kommunikation. (Standardvärdet är 16KB.) Den automatiska gränsen för SELECT-satser vid användning av - safe-uppdateringar. (Standardvärdet är 1000.) Aktivera binär loggning. Servern loggar alla uttalanden som ändrar data till binärloggen, som används för säkerhetskopiering och replikering. Se avsnitt 6.4.4, binärloggen. Alternativet värde, om det anges, är basnamnet för loggföljden. Servern skapar binära loggfiler i följd genom att lägga till ett numeriskt suffix till basnamnet. Det rekommenderas att du anger ett basnamn (se Avsnitt B.5.7, Kända problem i MySQL.). Annars använder MySQL värdnamn - bin som basnamn. När servern läser en post från indexfilen kontrollerar den huruvida posten innehåller en relativ sökväg, och om den gör den relativa delen av sökvägen ersätts med den absoluta sökvägen med hjälp av alternativet - loggfack. En absolut väg förblir oförändrad i ett sådant fall, indexet måste redigeras manuellt så att den nya vägen eller banorna kan användas. (I äldre versioner av MySQL krävs manuell åtgärd när man flyttar binär logg eller reläloggfiler.) (Bug 11745230, Bug 12133) Om du ställer in det här alternativet görs det att loggsystemvariabeln ställs in på ON (eller 1) och inte till basnamnet. Binär loggfilnamn (med sökväg) finns som systemvariabel för logbinbasename. I MySQL 5.7.3 och senare, om du anger det här alternativet utan att ange ett - server-id. servern får inte startas. (Bug 11763963, Bug 56739) Indexfilen för binära loggfilnamn. Se avsnitt 6.4.4, binärloggen. Om du släpper bort filnamnet, och om du inte angav ett med --loggfack. MySQL använder värdnamn - bin. index som filnamn. MySQL 5.7 använder Version 2 binära lograckhändelser, som inte kan läsas av MySQL Server-utgåvor före MySQL 5.6.6. Om du ställer in det här alternativet till 1 får mysqld att skriva binärloggen genom att använda logghändelser för Version 1, som är den enda versionen av binära logghändelser som används i tidigare versioner, och producerar därmed binära loggar som kan läsas av äldre slavar. Inställning - log-bin-använd-v1-rad-händelser till 0 (standard) gör att mysqld använder binära logghändelser för Version 2. Värdet som används för det här alternativet kan erhållas från systemvariabeln för skrivskyddade logbinusevevärningar. --Log-bin-använd-v1-rad-händelser är huvudsakligen av intresse när du konfigurerar upprepning av konfliktdetektering och upplösning med NDBEPOCHTRANS () som konfliktdetekteringsfunktionen, vilket kräver binär loggradshändelser för Version 2. Således är det här alternativet och - ndb-log-transaktions-id inte kompatibelt. Optionsval Alternativen i följande lista påverkar vilka uttalanden som skrivs till binärloggen och skickas sålunda av en replikationsmästarserver till sina slavar. Det finns också alternativ för slavservrar som styr vilka uttalanden som mottagits från mastern ska utföras eller ignoreras. Mer information finns i avsnitt 18.1.6.3, Replication Slave Options och Variables. Detta alternativ påverkar binär loggning på ett sätt som liknar det sätt som - replicate-do-db påverkar replikering. Effekterna av detta alternativ beror på huruvida det uttalandebaserade eller radbaserade loggningsformatet används, på samma sätt som effekterna av - replicate-do-db beror på om uttalande eller radbaserad replikering är i använda sig av. Du bör komma ihåg att formatet som används för att logga ett visst uttalande inte nödvändigtvis är detsamma som det som anges av värdet av binlogformat. Exempelvis är DDL-satser som CREATE TABLE och ALTER TABLE loggade som uttalanden, utan hänsyn till loggningsformatet i praktiken, så följande uttalande-baserade regler för - binlog-do-db gäller alltid för att bestämma huruvida eller inte uttalandet är loggat. Statement-baserad loggning. Endast dessa uttalanden skrivs till binärloggen där standarddatabasen (det vill säga den som valts av USE) är dbname. Om du vill ange mer än en databas, använd det här alternativet flera gånger, en gång för varje databas, men det gör det inte att orsaka över databasuppsättningar som UPDATE somedb. sometable SET foobar ska loggas medan en annan databas (eller ingen databas) är vald . För att ange flera databaser måste du använda flera instanser av det här alternativet. Eftersom databasnamn kan innehålla kommatecken behandlas listan som namnet på en enda databas om du tillhandahåller en kommaseparerad lista. Ett exempel på vad som inte fungerar som du kan förvänta dig när du använder uttalandebaserad loggning: Om servern startas med --binlog-do-dbsales och du anger följande påståenden, är UPDATE-förklaringen inte inloggad: Huvudskälet till detta bara kontrollera standarddatabasbeteendet är att det är svårt från uttalandet ensamt att veta om det ska replikeras (till exempel om du använder flera tabell DELETE-uttalanden eller multipeldata UPDATE-satser som fungerar över flera databaser). Det är också snabbare att bara kontrollera standarddatabasen istället för alla databaser om det inte finns något behov. Ett annat fall som kanske inte är självklart uppstår när en viss databas replikeras trots att den inte angavs när alternativet ställdes in. Om servern startas med --binlog-do-dbsales. Följande UPDATE-meddelande loggas trots att priserna inte inkluderades när du ställde in --binlog-do-db. Eftersom försäljningen är standarddatabasen när UPDATE-satsen utfärdas, är UPDATE loggad. Radbaserad loggning. Logging är begränsad till databas dbname. Endast ändringar i tabeller som hör till dbname loggas, standarddatabasen har ingen effekt på detta. Antag att servern är startad med --binlog-do-dbsales och radbaserad loggning är i kraft, och sedan utförs följande uttalanden: Förändringarna till februari-tabellen i försäljningsdatabasen loggas i enlighet med UPDATE-satsen här inträffar huruvida USE-uttalandet utfärdades eller inte. Men när du använder radbaserat loggningsformat och - binlog-do-dbsales. Ändringar som gjorts av följande UPDATE är inte inloggade: Även om USE-priserna har ändrats till USE-försäljningen. UPDATE-uttalandena effekter skulle fortfarande inte skrivas till binärloggen. En annan viktig skillnad i - binlog-do-db hantering för uttalningsbaserad loggning i motsats till radbaserad loggning sker med avseende på uttalanden som hänvisar till flera databaser. Antag att servern är startad med --binlog-do-dbdb1. och följande uttalanden utförs: Om du använder uttalandebaserad loggning skrivs uppdateringarna till båda tabellerna till binärloggen. När du använder radbaserat format är dock bara ändringarna i tabell1 loggade tabell2 i en annan databas, så den ändras inte av UPDATE. Antag nu att i stället för USE db1-satsen användes ett USE db4-meddelande: I detta fall skrivs UPDATE-satsen inte till binärloggen när man använder uttalandebaserad loggning. När du använder radbaserad loggning loggas ändringen till tabell1, men inte den till tabell2 med andra ord, bara ändringar i tabeller i databasen som heter --binlog-do-db loggas och valet av standarddatabasen har ingen effekt på detta beteende. Detta alternativ påverkar binär loggning på ett sätt som liknar det sätt som - replicate-ignore-db påverkar replikering. Effekterna av detta alternativ beror på huruvida det uttalandebaserade eller radbaserade loggningsformatet används, på samma sätt som effekterna av - replicate-ignore-db beror på om uttalande eller radbaserad replikering är i använda sig av. Du bör komma ihåg att formatet som används för att logga ett visst uttalande inte nödvändigtvis är detsamma som det som anges av värdet av binlogformat. Exempelvis är DDL-satser som CREATE TABLE och ALTER TABLE loggade som uttalanden, utan hänsyn till loggningsformatet i praktiken, så följande uttalande-baserade regler för - binlog-ignore-db gäller alltid för att bestämma huruvida eller inte uttalandet är loggat. Statement-baserad loggning. Anger att servern inte loggar in något uttalande där standarddatabasen (det vill säga den som valts av USE) är dbname. Före MySQL 5.7.2 orsakade detta alternativ eventuella uttalanden som innehöll fullständigt kvalificerade tabellnamn som inte skulle loggas om det inte fanns någon standarddatabas (det vill säga när SELECT DATABASE () returnerade NULL). I MySQL 5.7.2 och senare, när det inte finns någon standarddatabas, tillämpas inga - binlog-ignore-db-alternativ, och sådana uttalanden är alltid inloggade. (Bug 11829838, Bug 60188) Råbaserat format. Beräknar servern att inte logga uppdateringar på några tabeller i databasen dbname. Den aktuella databasen har ingen effekt. När du använder uttalandebaserad loggning fungerar inte följande exempel som du kan förvänta dig. Antag att servern är startad med --binlog-ignore-dbsales och du anger följande påståenden: UPDATE-satsen är inloggad i ett sådant fall eftersom --binlog-ignore-db endast gäller standarddatabasen (bestämd av USE-förklaringen ). Eftersom försäljningsdatabasen specifikt anges i uttalandet har uttalandet inte filtrerats. När du använder radbaserad loggning skrivs inte effekterna för UPDATE-uttalanden till binärloggen, vilket innebär att inga ändringar i sales. january-tabellen loggas i det här fallet. --binlog-ignore-dbsales gör att alla ändringar görs på tabeller i mästarens kopia av försäljningsdatabasen som ska ignoreras för binär loggning. Om du vill ange mer än en databas för att ignorera, använd det här alternativet flera gånger, en gång för varje databas. Eftersom databasnamn kan innehålla kommatecken behandlas listan som namnet på en enda databas om du tillhandahåller en kommaseparerad lista. Du bör inte använda det här alternativet om du använder över databasuppdateringar och du vill inte att dessa uppdateringar ska loggas. Checksum alternativ. MySQL 5.7 stöder läsning och skrivning av binära loggar. Dessa aktiveras med hjälp av de två alternativ som anges här: På grund av samtidiga problem kan en slav bli inkonsekvent när en transaktion innehåller uppdateringar för både transaktions - och nontransaktionstabeller. MySQL tries to preserve causality among these statements by writing nontransactional statements to the transaction cache, which is flushed upon commit. However, problems arise when modifications done to nontransactional tables on behalf of a transaction become immediately visible to other connections because these changes may not be written immediately into the binary log. The binlogdirectnontransactionalupdates variable offers one possible workaround to this issue. By default, this variable is disabled. Enabling binlogdirectnontransactionalupdates causes updates to nontransactional tables to be written directly to the binary log, rather than to the transaction cache. binlogdirectnontransactionalupdates works only for statements that are replicated using the statement-based binary logging format that is, it works only when the value of binlogformat is STATEMENT. or when binlogformat is MIXED and a given statement is being replicated using the statement-based format. This variable has no effect when the binary log format is ROW. or when binlogformat is set to MIXED and a given statement is replicated using the row-based format. Before enabling this variable, you must make certain that there are no dependencies between transactional and nontransactional tables an example of such a dependency would be the statement INSERT INTO myisamtable SELECT FROM innodbtable. Otherwise, such statements are likely to cause the slave to diverge from the master. In MySQL 5.7, this variable has no effect when the binary log format is ROW or MIXED. (Bug 51291) This variable sets the binary logging format, and can be any one of STATEMENT. ROW. or MIXED. See Section 18.2.1, Replication Formats. binlogformat is set by the --binlog-format option at startup, or by the binlogformat variable at runtime. While you can change the logging format at runtime, it is not recommended that you change it while replication is ongoing. This is due in part to the fact that slaves do not honor the masters binlogformat setting a given MySQL Server can change only its own logging format. Prior to MySQL 5.7.7, the default format was STATEMENT. In MySQL 5.7.7 and later the default is ROW. Exception . In MySQL Cluster, the default is MIXED statement-based replication is not supported for MySQL Cluster. You must have the SUPER privilege to set either the global or session binlogformat value. The rules governing when changes to this variable take effect and how long the effect lasts are the same as for other MySQL server system variables. For more information, see Section 14.7.4.1, SET Syntax for Variable Assignment. When MIXED is specified, statement-based replication is used, except for cases where only row-based replication is guaranteed to lead to proper results. For example, this happens when statements contain user-defined functions (UDF) or the UUID() function. An exception to this rule is that MIXED always uses statement-based replication for stored functions and triggers. There are exceptions when you cannot switch the replication format at runtime: From within a stored function or a trigger. If the session is currently in row-based replication mode and has open temporary tables. From within a transaction. Trying to switch the format in those cases results in an error. The binary log format affects the behavior of the following server options: noblob (Log all columns, except for unneeded BLOB and TEXT columns) In MySQL row-based replication, each row change event contains two images, a before image whose columns are matched against when searching for the row to be updated, and an after image containing the changes. Normally, MySQL logs full rows (that is, all columns) for both the before and after images. However, it is not strictly necessary to include every column in both images, and we can often save disk, memory, and network usage by logging only those columns which are actually required. When deleting a row, only the before image is logged, since there are no changed values to propagate following the deletion. When inserting a row, only the after image is logged, since there is no existing row to be matched. Only when updating a row are both the before and after images required, and both written to the binary log. For the before image, it is necessary only that the minimum set of columns required to uniquely identify rows is logged. If the table containing the row has a primary key, then only the primary key column or columns are written to the binary log. Otherwise, if the table has a unique key all of whose columns are NOT NULL. then only the columns in the unique key need be logged. (If the table has neither a primary key nor a unique key without any NULL columns, then all columns must be used in the before image, and logged.) In the after image, it is necessary to log only the columns which have actually changed. You can cause the server to log full or minimal rows using the binlogrowimage system variable. This variable actually takes one of three possible values, as shown in the following list: full. Log all columns in both the before image and the after image. minimal. Log only those columns in the before image that are required to identify the row to be changed log only those columns in the after image that are actually changed. noblob. Log all columns (same as full ), except for BLOB and TEXT columns that are not required to identify rows, or that have not changed. This variable is not supported by MySQL Cluster setting it has no effect on the logging of NDB tables. The default value is full. In MySQL 5.5 and earlier, full row images are always used for both before images and after images. If you need to replicate from a newer master to a slave running MySQL 5.5 or earlier, the master should always use this value. When using minimal or noblob. deletes and updates are guaranteed to work correctly for a given table if and only if the following conditions are true for both the source and destination tables: All columns must be present and in the same order each column must use the same data type as its counterpart in the other table. The tables must have identical primary key definitions. (In other words, the tables must be identical with the possible exception of indexes that are not part of the tables primary keys.) If these conditions are not met, it is possible that the primary key column values in the destination table may prove insufficient to provide a unique match for a delete or update. In this event, no warning or error is issued the master and slave silently diverge, thus breaking consistency. Setting this variable has no effect when the binary logging format is STATEMENT. When binlogformat is MIXED. the setting for binlogrowimage is applied to changes that are logged using row-based format, but this setting no effect on changes logged as statements. Setting binlogrowimage on either the global or session level does not cause an implicit commit this means that this variable can be changed while a transaction is in progress without affecting the transaction. Shows whether Version 2 binary logging is in use. A value of 1 shows that the server is writing the binary log using Version 1 logging events (the only version of binary log events used in previous releases), and thus producing a binary log that can be read by older slaves. 0 indicates that Version 2 binary log events are in use. This variable is read-only. To switch between Version 1 and Version 2 binary event binary logging, it is necessary to restart mysqld with the --log-bin-use-v1-row-events option. Other than when performing upgrades of MySQL Cluster Replication, --log-bin-use-v1-events is chiefly of interest when setting up replication conflict detection and resolution using NDBEPOCHTRANS(). which requires Version 2 binary row event logging. Thus, this option and --ndb-log-transaction-id are not compatible. MySQL Cluster NDB 7.5 uses Version 2 binary log row events by default. You should keep this mind when planning upgrades or downgrades, and for setups using MySQL Cluster Replication. Whether updates received by a slave server from a master server should be logged to the slaves own binary log. Binary logging must be enabled on the slave for this variable to have any effect. See Section 18.1.6, Replication and Binary Logging Options and Variables. If error 1592 is encountered, controls whether the generated warnings are added to the error log or not. Enabling this variable causes the master to examine checksums when reading from the binary log. masterverifychecksum is disabled by default in this case, the master uses the event length from the binary log to verify events, so that only complete events are read from the binary log. If a transaction requires more than this many bytes of memory, the server generates a Multi-statement transaction required more than maxbinlogcachesize bytes of storage error. The minimum value is 4096. The maximum possible value is 16EB (exabytes). The maximum recommended value is 4GB this is due to the fact that MySQL currently cannot work with binary log positions greater than 4GB. maxbinlogcachesize sets the size for the transaction cache only the upper limit for the statement cache is governed by the maxbinlogstmtcachesize system variable. In MySQL 5.7, the visibility to sessions of maxbinlogcachesize matches that of the binlogcachesize system variable in other words, changing its value effects only new sessions that are started after the value is changed. If a write to the binary log causes the current log file size to exceed the value of this variable, the server rotates the binary logs (closes the current file and opens the next one). The minimum value is 4096 bytes. The maximum and default value is 1GB. A transaction is written in one chunk to the binary log, so it is never split between several binary logs. Therefore, if you have big transactions, you might see binary log files larger than maxbinlogsize. If maxrelaylogsize is 0, the value of maxbinlogsize applies to relay logs as well. If nontransactional statements within a transaction require more than this many bytes of memory, the server generates an error. The minimum value is 4096. The maximum and default values are 4GB on 32-bit platforms and 16EB (exabytes) on 64-bit platforms. maxbinlogstmtcachesize sets the size for the statement cache only the upper limit for the transaction cache is governed exclusively by the maxbinlogcachesize system variable. Permitted Values (32-bit platforms) Permitted Values (64-bit platforms) Controls the number of binary log commit groups to collect before synchronizing the binary log to disk. When syncbinlog0. the binary log is never synchronized to disk, and when syncbinlog is set to a value greater than 0 this number of binary log commit groups is periodically synchronized to disk. When syncbinlog1. all transactions are synchronized to the binary log before they are committed. Therefore, even in the event of an unexpected restart, any transactions that are missing from the binary log are only in prepared state. This causes the servers automatic recovery routine to roll back those transactions. This guarantees that no transaction is lost from the binary log, and is the safest option. However this can have a negative impact on performance because of an increased number of disk writes. Using a higher value improves performance, but with the increased risk of data loss. When syncbinlog0 or syncbinlog is greater than 1, transactions are committed without having been synchronized to disk. Therefore, in the event of a power failure or operating system crash, it is possible that the server has committed some transactions that have not been synchronized to the binary log. Therefore it is impossible for the recovery routine to recover these transactions and they will be lost from the binary log. Prior to MySQL 5.7.7, the default value of syncbinlog was 0, which configures no synchronizing to diskin this case, the server relies on the operating system to flush the binary logs contents from time to time as for any other file. MySQL 5.7.7 and later use a default value of 1, which is the safest choice, but as noted above can impact performance. Sign Up Login You must be logged in to post a comment. USA: 1-866-221-0634 Canada: 1-866-221-0634 Germany: 49 89 143 01280 France: 33 1 57 60 83 57 Italy: 39 02 249 59 120 UK: 44 207 553 8447 Japan: 0120-065556 China: 10800-811-0823 India: 0008001005870
Comments
Post a Comment