Che ne dici di:
BINARY(16)
Dovrebbe essere abbastanza efficace.
Attualmente non esiste alcuna funzione per convertire gli indirizzi IPv6 testuali da/in binario nel server MySQL, come indicato in quella segnalazione di bug. Devi farlo nella tua applicazione o eventualmente creare una UDF (funzione definita dall'utente) nel server MySQL per farlo.
AGGIORNAMENTO:
MySQL 5.6.3 supporta gli indirizzi IPv6, vedere quanto segue:"INET6_ATON(espr) ".
Il tipo di dati è VARBINARY(16)
invece di BINARY(16)
come ho suggerito prima. L'unico motivo è che le funzioni MySQL funzionano sia per gli indirizzi IPv6 che IPv4. BINARY(16)
va bene per memorizzare solo indirizzi IPv6 e salva un byte. VARBINARY(16)
deve essere utilizzato durante la gestione degli indirizzi IPv6 e IPv4.
Un'implementazione per le versioni precedenti di MySQL e MariaDB, vedere quanto segue:"ESTENDERE MYSQL 5 CON LE FUNZIONI IPV6 ".